From ba8e66de6de30fabc9e529882b5f408b188a296a Mon Sep 17 00:00:00 2001 From: Assaf Gordon Date: Tue, 31 Jul 2018 11:25:35 -0600 Subject: [PATCH 23/61] sed: fix memory leak * sed/regexp.c (match_regex): Free the previously allocated regex struct before re-building the regex during program execution. --- sed/regexp.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/sed/regexp.c b/sed/regexp.c index 2801d6f..b3a4b41 100644 --- a/sed/regexp.c +++ b/sed/regexp.c @@ -269,7 +269,19 @@ match_regex (struct regex *regex, char *buf, size_t buflen, return (ret == 0); #else if (regex->pattern.no_sub && regsize) - compile_regex_1 (regex, regsize); + { + /* Re-compiling an existing regex, free the previously allocated + structures. */ + if (regex->dfa) + { + dfafree (regex->dfa); + free (regex->dfa); + regex->dfa = NULL; + } + regfree (®ex->pattern); + + compile_regex_1 (regex, regsize); + } regex->pattern.regs_allocated = REGS_REALLOCATE; -- 2.19.1