From: andrey dot bukatov at gmail dot com
Operating system: Ubuntu
PHP version: 5.4.19
Package: Regexps related
Bug Type: Bug
Bug description:preg_split cause segmentation fault
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 bug report at https://bugs.php.net/bug.php?id=65621&edit=1
--
Try a snapshot (PHP 5.4): https://bugs.php.net/fix.php?id=65621&r=trysnapshot54
Try a snapshot (PHP 5.3): https://bugs.php.net/fix.php?id=65621&r=trysnapshot53
Try a snapshot (trunk): https://bugs.php.net/fix.php?id=65621&r=trysnapshottrunk
Fixed in SVN: https://bugs.php.net/fix.php?id=65621&r=fixed
Fixed in release: https://bugs.php.net/fix.php?id=65621&r=alreadyfixed
Need backtrace: https://bugs.php.net/fix.php?id=65621&r=needtrace
Need Reproduce Script: https://bugs.php.net/fix.php?id=65621&r=needscript
Try newer version: https://bugs.php.net/fix.php?id=65621&r=oldversion
Not developer issue: https://bugs.php.net/fix.php?id=65621&r=support
Expected behavior: https://bugs.php.net/fix.php?id=65621&r=notwrong
Not enough info: https://bugs.php.net/fix.php?id=65621&r=notenoughinfo
Submitted twice: https://bugs.php.net/fix.php?id=65621&r=submittedtwice
register_globals: https://bugs.php.net/fix.php?id=65621&r=globals
PHP 4 support discontinued: https://bugs.php.net/fix.php?id=65621&r=php4
Daylight Savings: https://bugs.php.net/fix.php?id=65621&r=dst
IIS Stability: https://bugs.php.net/fix.php?id=65621&r=isapi
Install GNU Sed: https://bugs.php.net/fix.php?id=65621&r=gnused
Floating point limitations: https://bugs.php.net/fix.php?id=65621&r=float
No Zend Extensions: https://bugs.php.net/fix.php?id=65621&r=nozend
MySQL Configuration Error: https://bugs.php.net/fix.php?id=65621&r=mysqlcfg