Комментарии 18
У меня в PostgreSQL 9.2 не получается воспроизвести.
Версия: 9.2.3-1.pgdg60+1 (сборки для Debian Squeeze на pgapt.debian.net/).
Версия: 9.2.3-1.pgdg60+1 (сборки для Debian Squeeze на pgapt.debian.net/).
postgres=# select 1 where 'x' ~ '(((((x)*)*)*)*)*';
?column?
----------
1
(1 row)
postgres=#
+1
У себя воспроизвел (имеются) только 9.1(виндовый) и 8.4.0 (дебиан) — оба подвержены,
про 9.2.3 узнал от друга, говорит стандартная сборка от плеск.
Может используется, какая-нибудь стандартная либа (уже пофиксена). Хотя не слышал про такое, да и баг новый совсем. Хм, странно…
про 9.2.3 узнал от друга, говорит стандартная сборка от плеск.
Может используется, какая-нибудь стандартная либа (уже пофиксена). Хотя не слышал про такое, да и баг новый совсем. Хм, странно…
+1
Попробуйте увеличить порядок вложенности (например до 10 групп). Заранее благодарен.
+1
64 или 32?
А то тут подозрение на ошибку компилятора просыпается :)
А то тут подозрение на ошибку компилятора просыпается :)
+1
Просмотрел Release Notes. Следует присмотреться к следующим записям:
1. 9-1-3
Fix regular expression back-references with * attached (Tom Lane)
Rather than enforcing an exact string match, the code would effectively accept any string that satisfies the pattern sub-expression referenced by the back-reference symbol.
A similar problem still afflicts back-references that are embedded in a larger quantified expression, rather than being the immediate subject of the quantifier. This will be addressed in a future PostgreSQL release.
2. 9-1-5
Fix extraction of common prefixes from regular expressions (Tom Lane)
The code could get confused by quantified parenthesized subexpressions, such as ^(foo)?bar. This would lead to incorrect index optimization of searches for such patterns.
3. 9-2
Sync regular expression code with TCL 8.5.11 and improve internal processing (Tom Lane)
1. 9-1-3
Fix regular expression back-references with * attached (Tom Lane)
Rather than enforcing an exact string match, the code would effectively accept any string that satisfies the pattern sub-expression referenced by the back-reference symbol.
A similar problem still afflicts back-references that are embedded in a larger quantified expression, rather than being the immediate subject of the quantifier. This will be addressed in a future PostgreSQL release.
2. 9-1-5
Fix extraction of common prefixes from regular expressions (Tom Lane)
The code could get confused by quantified parenthesized subexpressions, such as ^(foo)?bar. This would lead to incorrect index optimization of searches for such patterns.
3. 9-2
Sync regular expression code with TCL 8.5.11 and improve internal processing (Tom Lane)
+3
TCL 8.5 x86_64 (Windows 7) — баг воспроизводится.
Спасибо, буду знать. К счастью, в боевом проекте регулярки на основе пользовательского ввода не строятся.
Спасибо, буду знать. К счастью, в боевом проекте регулярки на основе пользовательского ввода не строятся.
+3
Tcl 8.6 32 bit, свежескомпилированный VS10 Express, баг воспроизводится.
+2
Postgresql 9.2.1 на винде не воспроизводится, уровень вложенности увеличивал.
0
9.1 ubuntu 64 — воспроизводится
+2
TCL 8.5 64 бита, под «Мак» (он в стандартной поставке) — воспроизводится.
+1
PHP 5.4.5, бага не увидел.
0
9.1.8 на FreeBSD 8.3 amd64 — воспроизводится.
Рестарт зависшего процесса только жесткий — вместе со всем постгресом :(
Ждем фикса, а пока поставил простую проверку в местах где используется Regexp.
Рестарт зависшего процесса только жесткий — вместе со всем постгресом :(
Ждем фикса, а пока поставил простую проверку в местах где используется Regexp.
+2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
PostgreSQL, TCL и другие: Критическая ошибка в RE engine. Возможная уязвимость