postgres.git / summary / log / commit / refs
commit ea8c7e9054abf23fa3de2f8e4414f60ac8a8b620
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed Mar 19 15:09:24 2014 +0000
First released in: 9.4.0, 9.2.9, 9.3.5
Fix memory leak during regular expression execution.
For a regex containing backrefs, pg_regexec() might fail to free all the
sub-DFAs that were created during execution, resulting in a permanent
(session lifespan) memory leak. Problem was introduced by me in commit
587359479acbbdc95c8e37da40707e37097423f5. Per report from Sandro Santilli;
diagnosis by Greg Stark.
src/backend/regex/regexec.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c
index 0edb83c1099..2e976627f52 100644
--- a/src/backend/regex/regexec.c
+++ b/src/backend/regex/regexec.c
@@ -259,6 +259,7 @@ pg_regexec(regex_t *re,
/* clean up */
if (v->pmatch != pmatch && v->pmatch != mat)
FREE(v->pmatch);
+ n = (size_t) v->g->ntree;
for (i = 0; i < n; i++)
{
if (v->subdfas[i] != NULL)
[parent: fb1d92a9fa02]