баг в перле
Feb. 19th, 2003 11:16 am(эта запись будет интересна, наверное, только программистам, знающим Perl)
Благодаря ЖЖ найден небольшой баг в Перле, в обработке некоторых регулярных выражений.
Точнее, благодаря DeadJournal'у, на серверах которого он проявился. В самом ЖЖ этот код не бежит, т.к. это проверка валидности UTF8-строки, которая запускается, только если не включена инлайновая версия на C, а у нас она включена.
Собственно, все подробности здесь.
Сейчас думаю поиграться с исходниками Перла немножко, посидеть в gdb (давненько я не сидел в gdb!), и, может быть, исправить баг в самом Перле. Если за несколько часов не сдастся, напишу перлятам, пусть они сами разбираются.
Благодаря ЖЖ найден небольшой баг в Перле, в обработке некоторых регулярных выражений.
Точнее, благодаря DeadJournal'у, на серверах которого он проявился. В самом ЖЖ этот код не бежит, т.к. это проверка валидности UTF8-строки, которая запускается, только если не включена инлайновая версия на C, а у нас она включена.
Собственно, все подробности здесь.
Сейчас думаю поиграться с исходниками Перла немножко, посидеть в gdb (давненько я не сидел в gdb!), и, может быть, исправить баг в самом Перле. Если за несколько часов не сдастся, напишу перлятам, пусть они сами разбираются.
no subject
Date: 2003-02-19 01:36 am (UTC)no subject
Date: 2003-02-19 01:39 am (UTC)Спасибо, исправил.
no subject
Date: 2003-02-19 02:28 am (UTC)Поглядите вот сюда, плз: http://bugs.php.net/?id=20698
no subject
Date: 2003-02-19 02:31 am (UTC)Суть в том, что если matches слишком много, то PCRE падает. Но виновата не PCRE (хотя могла бы и не падать), а те, кто пишут регекспы, которые матчат слишком много матчей, грубо говоря.
Re:
Date: 2003-02-19 02:35 am (UTC)Re:
Date: 2003-02-19 04:25 am (UTC)Ответ PHP-шных девелоперов на Ваш баг мне кажется, откровенно говоря, глупым.
Я сейчас копаюсь в недрах перловской библиотеки регекспов, и там есть поддержка избежания бесконечной рекурсии и прочих подобных прелестей, но почему-то она не срабатывает.
no subject
Date: 2003-02-19 08:07 am (UTC)О результатах расскажешь?
Re:
Date: 2003-02-19 08:13 am (UTC)Что касается твоего конкретного случая с PHP и PCRE: попробуй вместо (\n|?) использовать
(?:\n|?) и скажи мне, предотвращает ли это крэш :)
no subject
Date: 2003-02-19 08:14 am (UTC)(?:\n|.)* вместо (\n|.)* .