Bug #60843 [Opn->Bgs]: preg_split crash

From: Date: Sun, 22 Jan 2012 22:54:18 +0000
Subject: Bug #60843 [Opn->Bgs]: preg_split crash
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-166707@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=60843&edit=1

 ID:                 60843
 Updated by:         pajoye@php.net
 Reported by:        ruben dot cheng at gmail dot com
 Summary:            preg_split crash
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            PCRE related
 Operating System:   Windows
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Ask your host to increase the stack and to update as well.


Previous Comments:
------------------------------------------------------------------------
[2012-01-22 22:40:18] ruben dot cheng at gmail dot com

Description:
------------
I was running a preg_split to split a string by ";" (taking care not to split 
enclosed ";" of SQL sentence) results a preg_split crash without notice and error. 
The test script is only 3 lines.

I'm using PHP 5.3.6, cannot upgrade because the hosting is stuck at this version.

Test script:
---------------
<?php

$query="BEGIN;INSERT INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa04r] ([data|b|date|bbcv100bsf-aa04r]). {909} \\\"Z03269\\\". {426}
[is|photocred|121]\\',\\'23\\')','admin_modules_banknote_known_serie_prefix');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa04-k8] ([data|b|date|bbcv100bsf-aa04-k8]). {909} \\\"K81\\\". {426}
[is|photocred|22]\\',\\'23\\')','admin_modules_banknote_known_serie_prefix');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv50bsf-aa03-h8] ([data|b|date|bbcv50bsf-aa03-h8]). {934} \\\"H00035502\\\" -
\\\"H88998045\\\" {431} \\\"H00024933\\\" -
\\\"H88998045\\\".\\',\\'6\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv50bsf-ab01-e8] ([data|b|date|bbcv50bsf-ab01-e8]). {909} \\\"E03\\\",
\\\"E07\\\", \\\"E71\\\", \\\"E21\\\" {221}
\\\"E63\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-ab01-c8] ([data|b|date|bbcv100bsf-ab01-c8]). {934} \\\"C00676969\\\" -
\\\"C70385093\\\" {431} \\\"C00676969\\\" -
\\\"C70399841\\\".\\',\\'6\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa03-d8] ([data|b|date|bbcv100bsf-aa03-d8]). {934} \\\"D03771810\\\" -
\\\"D40549699\\\" {431} \\\"D03771810\\\" -
\\\"D04574964\\\".\\',\\'6\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa03-c8] ([data|b|date|bbcv100bsf-aa03-c8]). {934} \\\"C72902534\\\" -
\\\"C89173970\\\" {431} \\\"C72902534\\\" -
\\\"C89255430\\\".\\',\\'6\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa04-l8] ([data|b|date|bbcv100bsf-aa04-l8]). {909}
\\\"L23\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{805} [g|bbcv100bsf]
{812} {813} [j|bbcv100bsf-aa03-e8], {814} \\\"[data|b|date|bbcv100bsf-aa03-e8]\\\", serie
[j|bbcv100bsf-aa03-e8|E8] {221} {808} [g|bbcv100bsf-aa]. {815} #2  {817} [j|bbcv100bsf-aa03-e8,e2].
{356} [is|photocred|74]
{358}\\',\\'20\\')','admin_modules_banknote_add');INSERT INTO pending
(commands,comments) VALUES ('INSERT INTO updates (lang_id,date,description,update_type) VALUES
(\\'3\\',now(),\\'{929} [j|bbcv100bsf-aa03-e8,e2]: {481} \\\"E56874656\\\"
{943}. {356}
[is|photocred|74]\\',\\'10\\')','admin_modules_banknote_known_piece_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{805} [g|bbcv50bsf]
{812} {813} [j|bbcv50bsf-aa03-j8], {814} \\\"[data|b|date|bbcv50bsf-aa03-j8]\\\", serie
[j|bbcv50bsf-aa03-j8|J8] {221} {808} [g|bbcv50bsf-aa]. {816}  {817} [j|bbcv50bsf-aa03-j8,e]. {356}
[is|photocred|121]
{358}\\',\\'20\\')','admin_modules_banknote_add');INSERT INTO pending
(commands,comments) VALUES ('INSERT INTO updates (lang_id,date,description,update_type) VALUES
(\\'3\\',now(),\\'{929} [j|bbcv50bsf-aa03-j8,e]: {481} \\\"J29933200\\\"
{943}. {356}
[is|photocred|121]\\',\\'10\\')','admin_modules_banknote_known_piece_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{805} [g|bbcv50bsf]
{812} {813} [j|bbcv50bsf-aa01-b8], {814} \\\"[data|b|date|bbcv50bsf-aa01-b8]\\\", serie
[j|bbcv50bsf-aa01-b8|B8] {221} {808} [g|bbcv50bsf-aa]. {815} #4  {817} [j|bbcv50bsf-aa01-b8,e4].
{356} [is|photocred|121]
{358}\\',\\'20\\')','admin_modules_banknote_add');INSERT INTO pending
(commands,comments) VALUES ('INSERT INTO updates (lang_id,date,description,update_type) VALUES
(\\'3\\',now(),\\'{805} [g|bbcv2bsf] {812} {813} [j|bbcv2bsf-aa01-b8], {814}
\\\"[data|b|date|bbcv2bsf-aa01-b8]\\\", serie [j|bbcv2bsf-aa01-b8|B8] {221} {808}
[g|bbcv2bsf-aa]. {816}  {817} [j|bbcv2bsf-aa01-b8,e]. {356} [is|photocred|74]
{358}\\',\\'20\\')','admin_modules_banknote_add');INSERT INTO pending
(commands,comments) VALUES ('INSERT INTO updates (lang_id,date,description,update_type) VALUES
(\\'3\\',now(),\\'{929} [j|bbcv500bs-ea04r] ([data|b|date|bbcv500bs-ea04r]). {934}
\\\"A00000389A\\\" - \\\"A01200000A\\\" {431} \\\"A00000001A\\\" -
\\\"A01200000A\\\".\\',\\'8\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv2bsf-aa01-c8] ([data|b|date|bbcv2bsf-aa01-c8]). {909}
\\\"C78\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv2bsf-aa02-f8] ([data|b|date|bbcv2bsf-aa02-f8]). {909} \\\"F49\\\" {221}
\\\"F67\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv2bsf-ab01-e8] ([data|b|date|bbcv2bsf-ab01-e8]). {909}
\\\"E39\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv10bsf-aa03-p8] ([data|b|date|bbcv10bsf-aa03-p8]). {909}
\\\"P00\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv20bsf-aa03r] ([data|b|date|bbcv20bsf-aa03r]). {909}
\\\"Z0398\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv100bsf-aa03r] ([data|b|date|bbcv100bsf-aa03r]). {909} \\\"Z01037\\\" {221}
\\\"Z01075\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv50bsf-aa04-n8] ([data|b|date|bbcv50bsf-aa04-n8]). {934} \\\"N21287822\\\" -
\\\"N67408190\\\" {431} \\\"N00038692\\\" -
\\\"N67408190\\\".\\',\\'6\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv50bsf-aa04-n8] ([data|b|date|bbcv50bsf-aa04-n8]). {934} \\\"N21000001\\\" -
\\\"N68000000\\\" {431} \\\"N00000001\\\" -
\\\"N68000000\\\".\\',\\'8\\')','admin_modules_banknote_edit');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv50bsf-aa04-n8] ([data|b|date|bbcv50bsf-aa04-n8]). {909}
\\\"N00\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv5bsf-aa01-d8] ([data|b|date|bbcv5bsf-aa01-d8]). {909}
\\\"D02\\\".\\',\\'23\\')','admin_modules_banknote_known_serie_prefix_batch');INSERT
INTO pending (commands,comments) VALUES ('INSERT INTO updates
(lang_id,date,description,update_type) VALUES (\\'3\\',now(),\\'{929}
[j|bbcv5bsf-aa01-d8] ([data|b|date|bbcv5bsf-aa01-d8]). {934} \\\"D04016426\\\" -
\\\"D86060540\\\" {431} \\\"D02454532\\\" -
\\\"D86060540\\\".\\',\\'6\\')','admin_modules_banknote_edit');DELETE
FROM updates_pending;INSERT INTO changelog (date,module,changes) VALUES (now(),
'admin_modules_deferred_generate','No Data');";

$sql=preg_split("/;+(?=([^'|^\\\']*['|\\\'][^'|^\\\']*['|\\\'])*[^'|^\\\']*[^'|^\\\']$)/",
$query);

echo "HERE";

?>

Expected result:
----------------
The script runs the preg_split line and crash, it didn't even reach the echo line



------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=60843&edit=1


Thread (5 messages)

« previous php.bugs (#166707) next »