Bug #65621 [Opn->Nab]: preg_split cause segmentation fault
| From: | felipe@php.net | Date: | Fri, 06 Sep 2013 12:35:24 +0000 |
| Subject: | Bug #65621 [Opn->Nab]: preg_split cause segmentation fault | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-181447@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=65621&edit=1
ID: 65621
Updated by: felipe@php.net
Reported by: andrey dot bukatov at gmail dot com
Summary: preg_split cause segmentation fault
-Status: Open
+Status: Not a bug
Type: Bug
-Package: Regexps related
+Package: PCRE related
Operating System: Ubuntu
PHP Version: 5.4.19
Block user comment: N
Private report: N
New Comment:
Sorry, but your problem does not imply a bug in PHP itself. For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system
is not the
appropriate forum for asking support questions. Due to the volume
of reports we can not explain in detail here why your report is not
a bug. The support channels will be able to provide an explanation
for you.
Thank you for your interest in PHP.
This is known issue on lib PCRE, not a PHP bug.
Previous Comments:
------------------------------------------------------------------------
[2013-09-05 10:52:07] andrey dot bukatov at gmail dot com
Description:
------------
This code cause segmentation fault in PHP Version 5.4.19
Test script:
---------------
<?php
$input = '
/**
* @RequestParam(name="ticket", description="ÐÑаÑинÑ
РоÑÑова Ñ Ð´Ð¾ÑеÑÑми и Ñже Ñ
болÑÑим ÑиÑлом гоÑÑей
Ñидела в гоÑÑиной. ÐÑаÑ
пÑовел гоÑÑей-мÑжÑин в
кабинеÑ, пÑÐµÐ´Ð»Ð°Ð³Ð°Ñ Ð¸Ð¼ ÑвоÑ
оÑ
оÑниÑкÑÑ ÐºÐ¾Ð»Ð»ÐµÐºÑиÑ
ÑÑÑеÑкиÑ
ÑÑÑбок. ÐзÑедка он
вÑÑ
одил и ÑпÑаÑивал: не
пÑиеÑ
ала ли? Ðдали ÐаÑÑÑ
ÐмиÑÑÐ¸ÐµÐ²Ð½Ñ ÐÑ
ÑоÑимовÑ,
пÑозваннÑÑ Ð² обÑеÑÑве le terrible dragon 1,
Ð´Ð°Ð¼Ñ Ð·Ð½Ð°Ð¼ÐµÐ½Ð¸ÑÑÑ Ð½Ðµ
богаÑÑÑвом, не поÑеÑÑÑми, но
пÑÑмоÑой Ñма и оÑкÑовенноÑ
пÑоÑÑоÑой обÑаÑениÑ. ÐаÑÑÑ
ÐмиÑÑÐ¸ÐµÐ²Ð½Ñ Ð·Ð½Ð°Ð»Ð° ÑаÑÑкаÑ
ÑамилиÑ, знала вÑÑ ÐоÑква и
веÑÑ ÐеÑеÑбÑÑг, и оба гоÑода,
ÑдивлÑÑÑÑ ÐµÐ¹, вÑиÑ
омолкÑ
поÑмеивалиÑÑ Ð½Ð°Ð´ ее
гÑÑбоÑÑÑÑ, ÑаÑÑказÑвали пÑо
нее анекдоÑÑ; Ñем не менее
вÑе без иÑклÑÑÐµÐ½Ð¸Ñ Ñважали и
боÑлиÑÑ ÐµÐµ. РкабинеÑе,
полном дÑма, Ñел ÑÐ°Ð·Ð³Ð¾Ð²Ð¾Ñ Ð¾
войне, коÑоÑÐ°Ñ Ð±Ñла
обÑÑвлена маниÑеÑÑом, о
набоÑе. ÐаниÑеÑÑа еÑе никÑо
не ÑиÑал, но вÑе знали о его
поÑвлении. ÐÑÐ°Ñ Ñидел на
оÑÑоманке Ð¼ÐµÐ¶Ð´Ñ Ð´Ð²ÑмÑ
кÑÑивÑими и
ÑазговаÑивавÑими ÑоÑедÑми.
ÐÑÐ°Ñ Ñам не кÑÑил и не
говоÑил, а, наклонÑÑ Ð³Ð¾Ð»Ð¾Ð²Ñ
Ñо на один бок, Ñо на дÑÑгой, Ñ
видимÑм ÑдоволÑÑÑвием
ÑмоÑÑел на кÑÑивÑиÑ
и ÑлÑÑал
ÑÐ°Ð·Ð³Ð¾Ð²Ð¾Ñ Ð´Ð²ÑÑ
ÑоÑедей ÑвоиÑ
,
коÑоÑÑÑ
он ÑÑÑавил междÑ
Ñобой. Ðдин из говоÑивÑиÑ
бÑл ÑÑаÑÑкий, Ñ Ð¼Ð¾ÑÑиниÑÑÑм,
желÑнÑм и бÑиÑÑм Ñ
ÑдÑм
лиÑом, Ñеловек, Ñже
пÑиближавÑийÑÑ Ðº ÑÑаÑоÑÑи,
Ñ
оÑÑ Ð¸ одеÑÑй, как ÑамÑй
моднÑй молодой Ñеловек; он
Ñидел Ñ Ð½Ð¾Ð³Ð°Ð¼Ð¸ на оÑÑоманке
Ñ Ð²Ð¸Ð´Ð¾Ð¼ домаÑнего Ñеловека
и, ÑÐ±Ð¾ÐºÑ Ð·Ð°Ð¿ÑÑÑив Ñебе
далеко в ÑÐ¾Ñ ÑнÑаÑÑ,
поÑÑвиÑÑо вÑÑгивал дÑм и
жмÑÑилÑÑ. ÐÑо бÑл ÑÑаÑÑй
Ñ
олоÑÑÑк ШинÑин, двоÑÑоднÑй
бÑÐ°Ñ Ð³ÑаÑини, злой ÑзÑк, как
пÑо него говоÑили в
моÑковÑкиÑ
гоÑÑинÑÑ
. Ðн,
казалоÑÑ, ÑниÑÑ
одил до
Ñвоего ÑобеÑедника. ÐÑÑгой,
Ñвежий, ÑозовÑй гваÑдейÑкий
оÑиÑеÑ, безÑпÑеÑно вÑмÑÑÑй,
заÑÑегнÑÑÑй и пÑиÑеÑаннÑй,
деÑжал ÑнÑаÑÑ Ñ ÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑа
и ÑозовÑми гÑбами Ñлегка
вÑÑÑгивал дÑмок, вÑпÑÑкаÑ
его колеÑками из кÑаÑивого
ÑÑа. ÐÑо бÑл ÑÐ¾Ñ Ð¿Ð¾ÑÑÑик ÐеÑг,
оÑиÑÐµÑ Ð¡ÐµÐ¼ÐµÐ½Ð¾Ð²Ñкого полка, Ñ
коÑоÑÑм ÐоÑÐ¸Ñ ÐµÑ
ал вмеÑÑе в
полк и коÑоÑÑм ÐаÑаÑа
дÑазнила ÐеÑÑ, ÑÑаÑÑÑÑ
гÑаÑинÑ, назÑÐ²Ð°Ñ ÐеÑга ее
жениÑ
ом. ÐÑÐ°Ñ Ñидел междÑ
ними и внимаÑелÑно ÑлÑÑал.
Самое пÑиÑÑное Ð´Ð»Ñ Ð³ÑаÑа
занÑÑие, за иÑклÑÑением игÑÑ
в боÑÑон, коÑоÑÑÑ Ð¾Ð½ оÑенÑ
лÑбил, бÑло положение
ÑлÑÑаÑÑего, оÑобенно когда
ÐµÐ¼Ñ ÑдавалоÑÑ ÑÑÑавиÑÑ Ð´Ð²ÑÑ
говоÑливÑÑ
ÑобеÑедников. â
ÐÑ, как же, баÑÑÑка, mon très honorable 2
ÐлÑÑÐ¾Ð½Ñ ÐаÑлÑÑ, â говоÑил
ШинÑин, поÑмеиваÑÑÑ Ð¸
ÑоединÑÑ (в Ñем и ÑоÑÑоÑла
оÑобенноÑÑÑ ÐµÐ³Ð¾ ÑеÑи) ÑамÑе
пÑоÑÑÑе наÑоднÑе ÑÑÑÑкие
вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ Ð¸Ð·ÑÑканнÑми
ÑÑанÑÑзÑкими ÑÑазами. â Vous comptez
vous faire des rentes sur l\'état 3, Ñ ÑоÑÑ Ð´Ð¾Ñ
одеÑ
полÑÑиÑÑ Ñ
оÑиÑе? â ÐеÑ-Ñ,
ÐеÑÑ ÐиколаевиÑ, Ñ ÑолÑко
Ð¶ÐµÐ»Ð°Ñ Ð´Ð¾ÐºÐ°Ð·Ð°ÑÑ, ÑÑо в
кавалеÑии вÑгод гоÑаздо
менÑÑе пÑоÑив пеÑ
оÑÑ. ÐоÑ
ÑепеÑÑ ÑообÑазиÑе, ÐеÑÑ
ÐиколаевиÑ, мое положение.
ÐеÑг говоÑил вÑегда оÑенÑ
ÑоÑно, Ñпокойно и ÑÑÑиво.
Ð Ð°Ð·Ð³Ð¾Ð²Ð¾Ñ ÐµÐ³Ð¾ вÑегда каÑалÑÑ
ÑолÑко его одного; он вÑегда
Ñпокойно молÑал, пока
говоÑили о Ñем-нибÑдÑ, не
имеÑÑем пÑÑмого к немÑ
оÑноÑениÑ. РмолÑаÑÑ Ñаким
обÑазом он мог неÑколÑко
ÑаÑов, не иÑпÑÑÑÐ²Ð°Ñ Ð¸ не
пÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ñ Ð² дÑÑгиÑ
ни
малейÑего замеÑаÑелÑÑÑва.
Ðо как ÑкоÑо ÑазговоÑ
каÑалÑÑ ÐµÐ³Ð¾ лиÑно, он
наÑинал говоÑиÑÑ
пÑоÑÑÑанно и Ñ Ð²Ð¸Ð´Ð¸Ð¼Ñм
ÑдоволÑÑÑвием. â
СообÑазиÑе мое положение,
ÐеÑÑ ÐиколаиÑ: бÑÐ´Ñ Ñ Ð²
кавалеÑии, Ñ Ð±Ñ Ð¿Ð¾Ð»ÑÑал не
более двÑÑ
ÑÐ¾Ñ ÑÑблей в
ÑÑеÑÑ, даже и в Ñине поÑÑÑика;
а ÑепеÑÑ Ñ Ð¿Ð¾Ð»ÑÑÐ°Ñ Ð´Ð²ÐµÑÑи
ÑÑидÑаÑÑ, â говоÑил он Ñ
ÑадоÑÑÑÑ, пÑиÑÑÐ½Ð¾Ñ ÑлÑбкой,
оглÑдÑÐ²Ð°Ñ Ð¨Ð¸Ð½Ñина и гÑаÑа,
как бÑдÑо Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ бÑло
оÑевидно, ÑÑо его ÑÑпеÑ
вÑегда бÑÐ´ÐµÑ ÑоÑÑавлÑÑÑ
главнÑÑ ÑÐµÐ»Ñ Ð¶ÐµÐ»Ð°Ð½Ð¸Ð¹ вÑеÑ
оÑÑалÑнÑÑ
лÑдей. â ÐÑоме
Ñого, ÐеÑÑ ÐиколаиÑ, пеÑейдÑ
в гваÑдиÑ, Ñ Ð½Ð° видÑ, â
пÑодолжал ÐеÑг, â и ваканÑии
в гваÑдейÑкой пеÑ
оÑе
гоÑаздо ÑаÑе. ÐоÑом, Ñами
ÑообÑазиÑе, как Ñ Ð¼Ð¾Ð³
ÑÑÑÑоиÑÑÑÑ Ð¸Ð· двÑÑ
ÑоÑ
ÑÑидÑаÑи ÑÑблей. Ð Ñ
оÑкладÑÐ²Ð°Ñ Ð¸ еÑе оÑÑÑ
поÑÑлаÑ, â пÑодолжал он,
пÑÑÐºÐ°Ñ ÐºÐ¾Ð»ÐµÑко. â La balance y est... 4
ÐÐµÐ¼ÐµÑ Ð½Ð° обÑÑ
е молоÑиÑ
Ñ
лебеÑ, comme dit le proverbe 5, â
пеÑекладÑÐ²Ð°Ñ ÑнÑаÑÑ Ð½Ð°
дÑÑгÑÑ ÑÑоÑÐ¾Ð½Ñ ÑÑа, Ñказал
ШинÑин и подмигнÑл гÑаÑÑ.
ÐÑÐ°Ñ ÑаÑÑ
оÑ
оÑалÑÑ. ÐÑÑгие
гоÑÑи, видÑ, ÑÑо ШинÑин ведеÑ
ÑазговоÑ, подоÑли поÑлÑÑаÑÑ.
ÐеÑг, не замеÑÐ°Ñ Ð½Ð¸ наÑмеÑки,
ни ÑавнодÑÑиÑ, пÑодолжал
ÑаÑÑказÑваÑÑ Ð¾ Ñом, как
пеÑеводом в гваÑÐ´Ð¸Ñ Ð¾Ð½ Ñже
вÑигÑал Ñин пеÑед Ñвоими
ÑоваÑиÑами по коÑпÑÑÑ, как в
военное вÑÐµÐ¼Ñ ÑоÑного
командиÑа могÑÑ ÑбиÑÑ Ð¸ он,
оÑÑавÑиÑÑ ÑÑаÑÑим в ÑоÑе,
Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÐµÐ½Ñ Ð»ÐµÐ³ÐºÐ¾ бÑÑÑ
ÑоÑнÑм, и как в Ð¿Ð¾Ð»ÐºÑ Ð²Ñе
лÑбÑÑ ÐµÐ³Ð¾, и как его папенÑка
им доволен. ÐеÑг, видимо,
наÑлаждалÑÑ, ÑаÑÑказÑваÑ
вÑе ÑÑо, и, казалоÑÑ, не
подозÑевал Ñого, ÑÑо Ñ
дÑÑгиÑ
лÑдей могли бÑÑÑ Ñоже
Ñвои инÑеÑеÑÑ. Ðо вÑе, ÑÑо он
ÑаÑÑказÑвал, бÑло Ñак мило,
ÑÑепенно, наивноÑÑÑ
молодого Ñгоизма его бÑла
Ñак оÑевидна, ÑÑо он
обезоÑÑживал ÑвоиÑ
ÑлÑÑаÑелей. â ÐÑ, баÑÑÑка, вÑ
и в пеÑ
оÑе и в кавалеÑии,
везде пойдеÑе в Ñ
од; ÑÑо Ñ Ð²Ð°Ð¼
пÑедÑекаÑ, â Ñказал ШинÑин,
ÑÑÐµÐ¿Ð»Ñ ÐµÐ³Ð¾ по плеÑÑ Ð¸
ÑпÑÑÐºÐ°Ñ Ð½Ð¾Ð³Ð¸ Ñ Ð¾ÑÑоманки.
ÐеÑг ÑадоÑÑно ÑлÑбнÑлÑÑ.
ÐÑаÑ, а за ним и гоÑÑи вÑÑли в
гоÑÑинÑÑ. ÐÑло Ñо вÑемÑ
пеÑед званÑм обедом, когда
ÑобÑавÑиеÑÑ Ð³Ð¾ÑÑи не
наÑинаÑÑ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾
ÑазговоÑа в ожидании
пÑизÑва к закÑÑке, а вмеÑÑе Ñ
Ñем ÑÑиÑаÑÑ Ð½ÐµÐ¾Ð±Ñ
одимÑм
ÑевелиÑÑÑÑ Ð¸ не молÑаÑÑ,
ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ, ÑÑо они
ниÑколÑко не неÑеÑпеливÑ
ÑеÑÑÑ Ð·Ð° ÑÑол. ХозÑева
поглÑдÑваÑÑ Ð½Ð° двеÑÑ Ð¸
изÑедка пеÑеглÑдÑваÑÑÑÑ
Ð¼ÐµÐ¶Ð´Ñ Ñобой. ÐоÑÑи по ÑÑим
взглÑдам ÑÑаÑаÑÑÑÑ
догадаÑÑÑÑ, кого или Ñего
еÑе ждÑÑ: важного
опоздавÑего ÑодÑÑвенника
или кÑÑанÑÑ, коÑоÑое еÑе не
поÑпело. ÐÑÐµÑ Ð¿ÑиеÑ
ал пеÑед
ÑамÑм обедом и неловко Ñидел
поÑÑедине гоÑÑиной на
пеÑвом попавÑемÑÑ ÐºÑеÑле,
загоÑодив вÑем доÑогÑ.
ÐÑаÑÐ¸Ð½Ñ Ñ
оÑела заÑÑавиÑÑ
его говоÑиÑÑ, но он наивно
ÑмоÑÑел в оÑки вокÑÑг ÑебÑ,
как Ð±Ñ Ð¾ÑÑÑÐºÐ¸Ð²Ð°Ñ ÐºÐ¾Ð³Ð¾-Ñо, и
одноÑложно оÑвеÑал на вÑе
вопÑоÑÑ Ð³ÑаÑини. Ðн бÑл
ÑÑеÑниÑелен и один не
замеÑал ÑÑого. ÐолÑÑÐ°Ñ ÑаÑÑÑ
гоÑÑей, знавÑÐ°Ñ ÐµÐ³Ð¾ иÑÑоÑиÑ
Ñ Ð¼ÐµÐ´Ð²ÐµÐ´ÐµÐ¼, лÑбопÑÑно
ÑмоÑÑели на ÑÑого болÑÑого,
ÑолÑÑого и ÑмиÑного
Ñеловека, недоÑмеваÑ, как
мог Ñакой ÑÐ²Ð°Ð»ÐµÐ½Ñ Ð¸ ÑкÑомник
ÑделаÑÑ ÑакÑÑ ÑÑÑÐºÑ Ñ
кваÑÑалÑнÑм.")
*/
';
$regex =
'/([a-z_\\][a-z0-9_\:\\]*[a-z]{1})|((?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?)|("(?:[^"]|"")*")|\s+|\*+|(.)/iu';
$matches = preg_split($regex, $input);
Expected result:
----------------
An array containing substrings of subject split along boundaries matched by
pattern.
Actual result:
--------------
Segmentation fault. Process finished with exit code 139.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=65621&edit=1