From:             
Operating system: Windows
PHP version:      Irrelevant
Package:          PCRE related
Bug Type:         Bug
Bug description:preg_split crash

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 bug report at https://bugs.php.net/bug.php?id=60843&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=60843&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=60843&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=60843&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=60843&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=60843&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=60843&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=60843&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=60843&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=60843&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=60843&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=60843&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=60843&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=60843&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=60843&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=60843&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=60843&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=60843&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=60843&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=60843&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=60843&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=60843&r=mysqlcfg

Reply via email to