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