php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #65621 preg_split cause segmentation fault
Submitted: 2013-09-05 10:52 UTC Modified: 2013-09-06 12:35 UTC
Votes:1
Avg. Score:5.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:0 (0.0%)
Same OS:0 (0.0%)
From: andrey dot bukatov at gmail dot com Assigned:
Status: Not a bug Package: PCRE related
PHP Version: 5.4.19 OS: Ubuntu
Private report: No CVE-ID: None
 [2013-09-05 10:52 UTC] 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.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2013-09-06 12:35 UTC] felipe@php.net
-Status: Open +Status: Not a bug -Package: Regexps related +Package: PCRE related
 [2013-09-06 12:35 UTC] felipe@php.net
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.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 23 22:01:31 2024 UTC