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