diff options
author | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2015-02-06 12:10:13 +0000 |
---|---|---|
committer | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2015-02-06 12:10:13 +0000 |
commit | 2a19539e8399a874fdeea663fd8aa0267f0af3b5 (patch) | |
tree | d9e56639cfbf179c591f5af9359937e23a268870 | |
parent | fc6c5b29f5a515a1a0c906b4ca38f6937405eef4 (diff) | |
download | pcre-2a19539e8399a874fdeea663fd8aa0267f0af3b5.tar.gz |
Fix memory leak for subroutine call with more than 10 captured groups to be
saved.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1517 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | pcre_exec.c | 4 |
2 files changed, 9 insertions, 2 deletions
@@ -1,7 +1,7 @@ ChangeLog for PCRE ------------------ -Version 8.37 xx-xxx-201x +Version 8.37 xx-xxx-2015 ------------------------ 1. When an (*ACCEPT) is triggered inside capturing parentheses, it arranges @@ -19,7 +19,10 @@ Version 8.37 xx-xxx-201x 4. An attempt to do global matching in pcretest with a zero-length ovector caused a crash. - + +5. Fixed a memory leak during matching that could occur for a subpattern + subroutine call (recursive or otherwise) if the number of captured groups + that had to be saved was greater than ten. Version 8.36 26-September-2014 diff --git a/pcre_exec.c b/pcre_exec.c index bb5620d..607aad8 100644 --- a/pcre_exec.c +++ b/pcre_exec.c @@ -1840,7 +1840,11 @@ for (;;) are defined in a range that can be tested for. */ if (rrc >= MATCH_BACKTRACK_MIN && rrc <= MATCH_BACKTRACK_MAX) + { + if (new_recursive.offset_save != stacksave) + (PUBL(free))(new_recursive.offset_save); RRETURN(MATCH_NOMATCH); + } /* Any return code other than NOMATCH is an error. */ |