fix the use of uninitialized value in regcomp
authorSzabolcs Nagy <nsz@port70.net>
Sat, 21 May 2016 13:21:38 +0000 (15:21 +0200)
committerRich Felker <dalias@aerifal.cx>
Sun, 22 May 2016 21:52:19 +0000 (17:52 -0400)
the num_submatches field of some ast nodes was not initialized in
tre_add_tag_{left,right}, but was accessed later.

this was a benign bug since the uninitialized values were never used
(these values are created during tre_add_tags and copied around during
tre_expand_ast where they are also used in computations, but nothing
in the final tnfa depends on them).

src/regex/regcomp.c

index 5fad98b322751bd97712dd0c69c0704b8c3f97e3..65f2fd0bbba8689a31a386d362e0e5d41772bfee 100644 (file)
@@ -1106,6 +1106,7 @@ tre_add_tag_left(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
   c->right->firstpos = NULL;
   c->right->lastpos = NULL;
   c->right->num_tags = 0;
+  c->right->num_submatches = 0;
   node->obj = c;
   node->type = CATENATION;
   return REG_OK;
@@ -1136,6 +1137,7 @@ tre_add_tag_right(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
   c->left->firstpos = NULL;
   c->left->lastpos = NULL;
   c->left->num_tags = 0;
+  c->left->num_submatches = 0;
   node->obj = c;
   node->type = CATENATION;
   return REG_OK;