sed/sed-fix-memory-leak.patch
2019-09-30 11:16:48 -04:00

40 lines
1.1 KiB
Diff

From ba8e66de6de30fabc9e529882b5f408b188a296a Mon Sep 17 00:00:00 2001
From: Assaf Gordon <assafgordon@gmail.com>
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 (&regex->pattern);
+
+ compile_regex_1 (regex, regsize);
+ }
regex->pattern.regs_allocated = REGS_REALLOCATE;
--
2.19.1