]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix regex match failures for backrefs combined with non-greedy quantifiers.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Jul 2013 01:23:04 +0000 (21:23 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 19 Jul 2013 01:23:04 +0000 (21:23 -0400)
commit57ddea3a276896eaa5bf533f24487c9a9a672d2a
treebf06eb3945ac95247b58c7ecb88e0fba7a60e041
parent4285fb9ff5adb8449576b242908ae646a0e959b4
Fix regex match failures for backrefs combined with non-greedy quantifiers.

An ancient logic error in cfindloop() could cause the regex engine to fail
to find matches that begin later than the start of the string.  This
function is only used when the regex pattern contains a back reference,
and so far as we can tell the error is only reachable if the pattern is
non-greedy (i.e. its first quantifier uses the ? modifier).  Furthermore,
the actual match must begin after some potential match that satisfies the
DFA but then fails the back-reference's match test.

Reported and fixed by Jeevan Chalke, with cosmetic adjustments by me.
src/backend/regex/regexec.c