From a129c80d54ec951567caa8c1b042275422d5f367 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 11 Oct 2010 11:46:22 -0400 Subject: Fix memory leak for some invalid regular expressions. --- posix/regcomp.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'posix/regcomp.c') diff --git a/posix/regcomp.c b/posix/regcomp.c index 03ab123907..9f5ca2cd0e 100644 --- a/posix/regcomp.c +++ b/posix/regcomp.c @@ -2418,7 +2418,11 @@ parse_sub_exp (re_string_t *regexp, regex_t *preg, re_token_t *token, { tree = parse_reg_exp (regexp, preg, token, syntax, nest, err); if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0)) - *err = REG_EPAREN; + { + if (tree != NULL) + free_tree (NULL, tree); + *err = REG_EPAREN; + } if (BE (*err != REG_NOERROR, 0)) return NULL; } @@ -3028,6 +3032,10 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, if (BE (sbcset == NULL, 0)) #endif /* RE_ENABLE_I18N */ { + re_free (sbcset); +#ifdef RE_ENABLE_I18N + re_free (mbcset); +#endif *err = REG_ESPACE; return NULL; } -- cgit v1.2.3