pgsql: Fix regex match failures for backrefs combined with non-greedy q
От | Tom Lane |
---|---|
Тема | pgsql: Fix regex match failures for backrefs combined with non-greedy q |
Дата | |
Msg-id | E1UzzQB-00032r-9p@gemulon.postgresql.org обсуждение исходный текст |
Ответы |
Re: pgsql: Fix regex match failures for backrefs
combined with non-greedy q
|
Список | pgsql-committers |
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. Branch ------ REL9_3_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/f8463fba2434d083bb699d1cc8a7d7159d614a7b Modified Files -------------- src/backend/regex/regexec.c | 20 +++++++++++--------- src/test/regress/expected/regex.out | 15 +++++++++++++++ src/test/regress/sql/regex.sql | 5 +++++ 3 files changed, 31 insertions(+), 9 deletions(-)
В списке pgsql-committers по дате отправления: