1
0
mirror of https://github.com/postgres/postgres.git synced 2025-04-29 13:56:47 +03:00

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.
This commit is contained in:
Tom Lane 2014-03-19 11:09:24 -04:00
parent fb1d92a9fa
commit ea8c7e9054

View File

@ -259,6 +259,7 @@ pg_regexec(regex_t *re,
/* clean up */ /* clean up */
if (v->pmatch != pmatch && v->pmatch != mat) if (v->pmatch != pmatch && v->pmatch != mat)
FREE(v->pmatch); FREE(v->pmatch);
n = (size_t) v->g->ntree;
for (i = 0; i < n; i++) for (i = 0; i < n; i++)
{ {
if (v->subdfas[i] != NULL) if (v->subdfas[i] != NULL)