[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re /ext/pdo/tests bug_43130.phpt
iliaa Mon Oct 29 22:37:26 2007 UTC Added files: (Branch: PHP_5_2) /php-src/ext/pdo/tests bug_43130.phpt Modified files: /php-src/ext/pdopdo_sql_parser.re pdo_sql_parser.c /php-srcNEWS Log: MFB: Fixed bug #43130 (Bound parameters cannot have - in their name) http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.9r2=1.28.2.4.2.10diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.9 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.10 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.9 Tue Jun 5 22:55:26 2007 +++ php-src/ext/pdo/pdo_sql_parser.re Mon Oct 29 22:37:25 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.9 2007/06/05 22:55:26 iliaa Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.10 2007/10/29 22:37:25 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -46,7 +46,7 @@ s-tok = cursor; /*!re2c - BINDCHR = [:][a-zA-Z0-9_]+; + BINDCHR = [:][a-zA-Z0-9_-]+; QUESTION= [?]; SPECIALS= [:?']; MULTICHAR = [:?]; http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.12r2=1.35.2.6.2.13diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.12 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.13 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.12 Tue Jun 5 22:55:26 2007 +++ php-src/ext/pdo/pdo_sql_parser.cMon Oct 29 22:37:25 2007 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.11.0 on Tue Jun 5 18:45:24 2007 */ +/* Generated by re2c 0.11.0 on Mon Oct 29 18:36:37 2007 */ #line 1 ext/pdo/pdo_sql_parser.re /* +--+ @@ -18,7 +18,7 @@ +--+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.12 2007/06/05 22:55:26 iliaa Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.13 2007/10/29 22:37:25 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -50,142 +50,250 @@ #line 55 ext/pdo/pdo_sql_parser.re - { - static unsigned char yybm[] = { - 192, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 64, 200, 200, 200, 200, 128, - 200, 200, 200, 200, 200, 200, 200, 200, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 208, 200, 200, 200, 200, 208, - 200, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 200, 200, 200, 200, 232, - 200, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, - }; - -#line 90 ext/pdo/pdo_sql_parser.c - { - YYCTYPE yych; - - if((YYLIMIT - YYCURSOR) 2) YYFILL(2); - yych = *YYCURSOR; - if(yybm[0+yych] 8) { - goto yy8; - } - if(yych = 0x00) goto yy11; - if(yych = '') goto yy2; - if(yych = '\'') goto yy4; - if(yych = '') goto yy5; - goto yy6; + +#line 55 ext/pdo/pdo_sql_parser.c +{ + YYCTYPE yych; + + if((YYLIMIT - YYCURSOR) 2) YYFILL(2); + yych = *YYCURSOR; + switch(yych) { + case 0x00: goto yy11; + case '': goto yy2; + case '\'': goto yy4; + case ':': goto yy5; + case '?': goto yy6; + default:
[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re
iliaa Tue Jun 5 22:55:27 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/pdopdo_sql_parser.re pdo_sql_parser.c /php-srcNEWS Log: Fixed bug #41596 (Fixed a crash inside pdo_pgsql on some non-well-formed SQL queries). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.8r2=1.28.2.4.2.9diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.8 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.9 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.8 Tue Mar 6 00:52:55 2007 +++ php-src/ext/pdo/pdo_sql_parser.re Tue Jun 5 22:55:26 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.8 2007/03/06 00:52:55 iliaa Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.9 2007/06/05 22:55:26 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -28,6 +28,7 @@ #define PDO_PARSER_EOI 4 #define RET(i) {s-cur = cursor; return i; } +#define SKIP_ONE(i) {s-cur = s-tok + 1; return 1; } #define YYCTYPE unsigned char #define YYCURSORcursor @@ -57,9 +58,9 @@ ([] ([^])* []) { RET(PDO_PARSER_TEXT); } (['] ([^'])* [']) { RET(PDO_PARSER_TEXT); } MULTICHAR{2,} { RET(PDO_PARSER_TEXT); } - BINDCHR { RET(PDO_PARSER_BIND); } + BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } - SPECIALS { RET(PDO_PARSER_TEXT); } + SPECIALS { SKIP_ONE(PDO_PARSER_TEXT); } (ANYNOEOF\SPECIALS)+{ RET(PDO_PARSER_TEXT); } EOF { RET(PDO_PARSER_EOI); } */ @@ -96,6 +97,10 @@ while((t = scan(s)) != PDO_PARSER_EOI) { if (t == PDO_PARSER_BIND || t == PDO_PARSER_BIND_POS) { if (t == PDO_PARSER_BIND) { + int len = s.cur - s.tok; + if ((inquery (s.cur - len)) isalnum(*(s.cur - len - 1))) { + continue; + } query_type |= PDO_PLACEHOLDER_NAMED; } else { query_type |= PDO_PLACEHOLDER_POSITIONAL; http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.11r2=1.35.2.6.2.12diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.11 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.12 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.11 Tue Mar 6 00:52:55 2007 +++ php-src/ext/pdo/pdo_sql_parser.cTue Jun 5 22:55:26 2007 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.11.0 on Mon Mar 5 19:42:28 2007 */ +/* Generated by re2c 0.11.0 on Tue Jun 5 18:45:24 2007 */ #line 1 ext/pdo/pdo_sql_parser.re /* +--+ @@ -18,7 +18,7 @@ +--+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.11 2007/03/06 00:52:55 iliaa Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.12 2007/06/05 22:55:26 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -30,6 +30,7 @@ #define PDO_PARSER_EOI 4 #define RET(i) {s-cur = cursor; return i; } +#define SKIP_ONE(i) {s-cur = s-tok + 1; return 1; } #define YYCTYPE unsigned char #define YYCURSORcursor @@ -46,7 +47,7 @@ char *cursor = s-cur; s-tok = cursor; - #line 54 ext/pdo/pdo_sql_parser.re + #line 55 ext/pdo/pdo_sql_parser.re { @@ -85,7 +86,7 @@ 200, 200, 200, 200, 200, 200, 200, 200, }; -#line 89 ext/pdo/pdo_sql_parser.c +#line 90 ext/pdo/pdo_sql_parser.c { YYCTYPE yych; @@ -103,9 +104,9 @@ yych = *++YYCURSOR; goto yy24; yy3: -#line 62 ext/pdo/pdo_sql_parser.re - { RET(PDO_PARSER_TEXT); } -#line 109 ext/pdo/pdo_sql_parser.c +#line 63 ext/pdo/pdo_sql_parser.re + { SKIP_ONE(PDO_PARSER_TEXT); } +#line 110 ext/pdo/pdo_sql_parser.c yy4: yych = *++YYCURSOR; goto yy20; @@ -122,9 +123,9 @@ if(yybm[0+(yych = *YYCURSOR)] 16) { goto yy13; } -#line 61 ext/pdo/pdo_sql_parser.re +#line 62 ext/pdo/pdo_sql_parser.re
[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re
iliaa Tue Mar 6 00:52:55 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/pdopdo_sql_parser.c pdo_sql_parser.re /php-srcNEWS Log: Fixed bug #40417 (Allow multiple instances of the same named PDO token in prepared statement emulation code). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.10r2=1.35.2.6.2.11diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.10 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.11 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.10 Fri Feb 2 00:03:33 2007 +++ php-src/ext/pdo/pdo_sql_parser.cTue Mar 6 00:52:55 2007 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.11.0 on Thu Feb 1 19:01:11 2007 */ +/* Generated by re2c 0.11.0 on Mon Mar 5 19:42:28 2007 */ #line 1 ext/pdo/pdo_sql_parser.re /* +--+ @@ -18,7 +18,7 @@ +--+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.10 2007/02/02 00:03:33 iliaa Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.11 2007/03/06 00:52:55 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -280,13 +280,25 @@ } if (params bindno != zend_hash_num_elements(params) stmt-supports_placeholders == PDO_PLACEHOLDER_NONE) { + /* extra bit of validation for instances when same params are bound more then once */ + if (query_type != PDO_PLACEHOLDER_POSITIONAL bindno zend_hash_num_elements(params)) { + int ok = 1; + for (plc = placeholders; plc; plc = plc-next) { + if (zend_hash_find(params, plc-pos, plc-len, (void**) param) == FAILURE) { + ok = 0; + break; + } + } + if (ok) { + goto safe; + } + } pdo_raise_impl_error(stmt-dbh, stmt, HY093, number of bound variables does not match number of tokens TSRMLS_CC); ret = -1; goto clean_up; } - +safe: /* what are we going to do ? */ - if (stmt-supports_placeholders == PDO_PLACEHOLDER_NONE) { /* query generation */ http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.7r2=1.28.2.4.2.8diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.7 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.8 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.7 Thu Feb 1 00:12:39 2007 +++ php-src/ext/pdo/pdo_sql_parser.re Tue Mar 6 00:52:55 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.7 2007/02/01 00:12:39 iliaa Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.8 2007/03/06 00:52:55 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -155,13 +155,25 @@ } if (params bindno != zend_hash_num_elements(params) stmt-supports_placeholders == PDO_PLACEHOLDER_NONE) { + /* extra bit of validation for instances when same params are bound more then once */ + if (query_type != PDO_PLACEHOLDER_POSITIONAL bindno zend_hash_num_elements(params)) { + int ok = 1; + for (plc = placeholders; plc; plc = plc-next) { + if (zend_hash_find(params, plc-pos, plc-len, (void**) param) == FAILURE) { + ok = 0; + break; + } + } + if (ok) { + goto safe; + } + } pdo_raise_impl_error(stmt-dbh, stmt, HY093, number of bound variables does not match number of tokens TSRMLS_CC); ret = -1; goto clean_up; } - +safe: /* what are we going to do ? */ - if (stmt-supports_placeholders == PDO_PLACEHOLDER_NONE) { /* query generation */ http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.574r2=1.2027.2.547.2.575diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.574 php-src/NEWS:1.2027.2.547.2.575 --- php-src/NEWS:1.2027.2.547.2.574 Mon Mar 5 15:49:00 2007 +++ php-src/NEWSTue Mar 6 00:52:55 2007 @@ -52,6 +52,8 @@ - Fixed bug #40451 (addAttribute() may crash when used with non-existent child node). (Tony) - Fixed bug #40428 (imagepstext() doesn't accept optional parameter). (Pierre) +- Fixed bug #40417 (Allow multiple instances of the same named PDO token in + prepared statement emulation code).
[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re /ext/pdo/tests bug_39656.phpt
iliaa Thu Feb 1 00:12:39 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/pdo/tests bug_39656.phpt /php-srcNEWS /php-src/ext/pdopdo_sql_parser.re pdo_sql_parser.c Log: Fixed bug #40285 (The PDO prepare parser goes into an infinite loop in some instances). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_39656.phpt?r1=1.1.2.4r2=1.1.2.5diff_format=u Index: php-src/ext/pdo/tests/bug_39656.phpt diff -u php-src/ext/pdo/tests/bug_39656.phpt:1.1.2.4 php-src/ext/pdo/tests/bug_39656.phpt:1.1.2.5 --- php-src/ext/pdo/tests/bug_39656.phpt:1.1.2.4Sat Dec 9 16:41:24 2006 +++ php-src/ext/pdo/tests/bug_39656.phptThu Feb 1 00:12:39 2007 @@ -1,5 +1,5 @@ --TEST-- -PDO Common: Bug #39656 (Crash when calling fetch() on a PDO statment object after closeCursor()) +PDO Common: Bug #40285 (The prepare parser goes into an infinite loop on ': or :) --SKIPIF-- ?php if (!extension_loaded('pdo')) die('skip'); @@ -15,36 +15,13 @@ require_once getenv('REDIR_TEST_DIR') . 'pdo_test.inc'; $db = PDOTest::factory(); [EMAIL PROTECTED]exec(DROP TABLE testtable); -$db-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$db-exec('CREATE TABLE test (field1 VARCHAR(32), field2 VARCHAR(32), field3 VARCHAR(32), field4 INT)'); -$db-exec(CREATE TABLE testtable (id INTEGER NOT NULL PRIMARY KEY, usr VARCHAR( 256 ) NOT NULL)); -$db-exec(INSERT INTO testtable (id, usr) VALUES (1, 'user')); - -$stmt = $db-prepare(SELECT * FROM testtable WHERE id = ?); -$stmt-bindValue(1, 1, PDO::PARAM_INT ); -$stmt-execute(); -$row = $stmt-fetch(); -var_dump( $row ); - -$stmt-execute(); -$stmt-closeCursor(); -$row = $stmt-fetch(); // this line will crash CLI -var_dump( $row ); +$db-setAttribute(PDO::ATTR_EMULATE_PREPARES, true); +$s = $db-prepare(INSERT INTO test VALUES( ':id', 'name', 'section', 22) ); +$s-execute(); echo Done\n; ? --EXPECT-- -array(4) { - [id]= - string(1) 1 - [0]= - string(1) 1 - [usr]= - string(4) user - [1]= - string(4) user -} -bool(false) Done - http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.517r2=1.2027.2.547.2.518diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.517 php-src/NEWS:1.2027.2.547.2.518 --- php-src/NEWS:1.2027.2.547.2.517 Wed Jan 31 13:57:58 2007 +++ php-src/NEWSThu Feb 1 00:12:39 2007 @@ -101,6 +101,8 @@ the user part of the email address. (Derick) - Fixed bug #40297 (compile failure in ZTS mode when collections support is missing). (Tony) +- Fixed bug #40285 (The PDO prepare parser goes into an infinite loop in + some instances). (Ilia) - Fixed bug #40259 (ob_start call many times - memory error). (Dmitry) - Fixed bug #40231 (file_exists incorrectly reports false). (Dmitry) - Fixed bug #40228 (ZipArchive::extractTo does create empty directories http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.6r2=1.28.2.4.2.7diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.6 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.7 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.6 Wed Jan 3 22:05:24 2007 +++ php-src/ext/pdo/pdo_sql_parser.re Thu Feb 1 00:12:39 2007 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.6 2007/01/03 22:05:24 nlopess Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.7 2007/02/01 00:12:39 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -48,6 +48,7 @@ BINDCHR = [:][a-zA-Z0-9_]+; QUESTION= [?]; SPECIALS= [:?']; + MULTICHAR = [:?]; EOF = [\000]; ANYNOEOF= [\001-\377]; */ @@ -55,7 +56,7 @@ /*!re2c ([] ([^])* []) { RET(PDO_PARSER_TEXT); } (['] ([^'])* [']) { RET(PDO_PARSER_TEXT); } - SPECIALS{2,} { RET(PDO_PARSER_TEXT); } + MULTICHAR{2,} { RET(PDO_PARSER_TEXT); } BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } SPECIALS { RET(PDO_PARSER_TEXT); } http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.8r2=1.35.2.6.2.9diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.8 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.9 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.8 Wed Jan 3 22:05:24 2007 +++ php-src/ext/pdo/pdo_sql_parser.cThu Feb 1 00:12:39 2007 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.10.4 on Wed
[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re /ext/pdo/tests bug_36798.phpt
iliaa Tue Dec 5 18:05:00 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/pdo/tests bug_36798.phpt Modified files: /php-src/ext/pdopdo_sql_parser.re pdo_sql_parser.c /php-srcNEWS Log: Fixed bug #36798 (Error parsing named parameters with queries containing high-ascii chars). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.4r2=1.28.2.4.2.5diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.4 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.5 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.4 Mon Dec 4 00:38:46 2006 +++ php-src/ext/pdo/pdo_sql_parser.re Tue Dec 5 18:04:59 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.4 2006/12/04 00:38:46 iliaa Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.5 2006/12/05 18:04:59 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -48,15 +48,13 @@ BINDCHR = [:][a-zA-Z0-9_]+; QUESTION= [?]; SPECIALS= [:?']; - ESCQQ = [\\][]; - ESCQ= [\\][']; - EOF = [\000]; + EOF = [\000]; ANYNOEOF= [\001-\377]; */ /*!re2c - ([] (ESCQQ|[\\]ANYNOEOF|ANYNOEOF\[\\])* []) { RET(PDO_PARSER_TEXT); } - (['] (ESCQ|[\\]ANYNOEOF|ANYNOEOF\[\\'])* [']) { RET(PDO_PARSER_TEXT); } + ([] ([^])* []) { RET(PDO_PARSER_TEXT); } + (['] ([^'])* [']) { RET(PDO_PARSER_TEXT); } SPECIALS{2,} { RET(PDO_PARSER_TEXT); } BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.5r2=1.35.2.6.2.6diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.5 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.6 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.5 Mon Dec 4 00:38:46 2006 +++ php-src/ext/pdo/pdo_sql_parser.cTue Dec 5 18:04:59 2006 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.10.6 on Sun Dec 3 19:05:06 2006 */ +/* Generated by re2c 0.10.6 on Mon Dec 4 16:21:45 2006 */ #line 1 ext/pdo/pdo_sql_parser.re /* +--+ @@ -18,7 +18,7 @@ +--+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.5 2006/12/04 00:38:46 iliaa Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.6 2006/12/05 18:04:59 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -46,12 +46,12 @@ char *cursor = s-cur; s-tok = cursor; - #line 55 ext/pdo/pdo_sql_parser.re + #line 53 ext/pdo/pdo_sql_parser.re { static unsigned char yybm[] = { - 0, 162, 162, 162, 162, 162, 162, 162, + 160, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, @@ -62,7 +62,7 @@ 162, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, - 170, 170, 170, 162, 2, 162, 162, 170, + 170, 170, 170, 162, 162, 162, 162, 170, 162, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, @@ -88,7 +88,6 @@ #line 89 ext/pdo/pdo_sql_parser.c { YYCTYPE yych; - unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) 3) YYFILL(3); yych = *YYCURSOR; @@ -101,27 +100,23 @@ if(yych = '') goto yy5; goto yy6; yy2: - yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); + yych = *++YYCURSOR; if(yybm[0+yych] 64) { - goto yy30; + goto yy28; } - if(yych = 0x00) goto yy3; - if(yych == '') goto yy28; - goto yy33; + if(yych == '') goto yy26; + goto yy30; yy3: -#line 63 ext/pdo/pdo_sql_parser.re +#line 61 ext/pdo/pdo_sql_parser.re { RET(PDO_PARSER_TEXT); } -#line 116 ext/pdo/pdo_sql_parser.c +#line 113 ext/pdo/pdo_sql_parser.c yy4: - yyaccept = 0; - yych =
[PHP-CVS] cvs: php-src(PHP_5_2) / NEWS /ext/pdo pdo_sql_parser.c pdo_sql_parser.re
iliaa Mon Dec 4 00:38:46 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/pdopdo_sql_parser.c pdo_sql_parser.re /php-srcNEWS Log: Fixed bug #39483 (Problem with handling of \ char in prepared statements). http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.c?r1=1.35.2.6.2.4r2=1.35.2.6.2.5diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.c diff -u php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.4 php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.5 --- php-src/ext/pdo/pdo_sql_parser.c:1.35.2.6.2.4 Sun Dec 3 23:27:44 2006 +++ php-src/ext/pdo/pdo_sql_parser.cMon Dec 4 00:38:46 2006 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.10.6 on Sun Dec 3 18:24:46 2006 */ +/* Generated by re2c 0.10.6 on Sun Dec 3 19:05:06 2006 */ #line 1 ext/pdo/pdo_sql_parser.re /* +--+ @@ -18,7 +18,7 @@ +--+ */ -/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.4 2006/12/03 23:27:44 iliaa Exp $ */ +/* $Id: pdo_sql_parser.c,v 1.35.2.6.2.5 2006/12/04 00:38:46 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -232,8 +232,8 @@ ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '\'') goto yy23; - goto yy25; + if(yych = 0x00) goto yy25; + goto yy23; yy27: yych = *++YYCURSOR; goto yy22; @@ -274,8 +274,8 @@ ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych == '') goto yy32; - goto yy25; + if(yych = 0x00) goto yy25; + goto yy32; yy35: ++YYCURSOR; yych = *YYCURSOR; http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_sql_parser.re?r1=1.28.2.4.2.3r2=1.28.2.4.2.4diff_format=u Index: php-src/ext/pdo/pdo_sql_parser.re diff -u php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.3 php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.4 --- php-src/ext/pdo/pdo_sql_parser.re:1.28.2.4.2.3 Sun Dec 3 23:27:44 2006 +++ php-src/ext/pdo/pdo_sql_parser.re Mon Dec 4 00:38:46 2006 @@ -16,7 +16,7 @@ +--+ */ -/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.3 2006/12/03 23:27:44 iliaa Exp $ */ +/* $Id: pdo_sql_parser.re,v 1.28.2.4.2.4 2006/12/04 00:38:46 iliaa Exp $ */ #include php.h #include php_pdo_driver.h @@ -55,8 +55,8 @@ */ /*!re2c - ([] (ESCQQ|ANYNOEOF\[\\])* []) { RET(PDO_PARSER_TEXT); } - (['] (ESCQ|ANYNOEOF\[\\'])* [']){ RET(PDO_PARSER_TEXT); } + ([] (ESCQQ|[\\]ANYNOEOF|ANYNOEOF\[\\])* []) { RET(PDO_PARSER_TEXT); } + (['] (ESCQ|[\\]ANYNOEOF|ANYNOEOF\[\\'])* [']) { RET(PDO_PARSER_TEXT); } SPECIALS{2,} { RET(PDO_PARSER_TEXT); } BINDCHR { RET(PDO_PARSER_BIND); } QUESTION { RET(PDO_PARSER_BIND_POS); } http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.394r2=1.2027.2.547.2.395diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.394 php-src/NEWS:1.2027.2.547.2.395 --- php-src/NEWS:1.2027.2.547.2.394 Sun Dec 3 21:27:35 2006 +++ php-src/NEWSMon Dec 4 00:38:46 2006 @@ -82,6 +82,8 @@ ZEND_MM_ALIGNED_MIN_HEADER_SIZE). (wharmby at uk dot ibm dot com, Dmitry) - Fixed bug #39527 (Failure to retrieve results when multiple unbuffered, prepared statements are used in pdo_mysql). (Ilia) +- Fixed bug #39483 (Problem with handling of \ char in prepared statements). + (Ilia, suhachov at gmail dot com) - Fixed bug #39458 (ftp_nlist() returns false on empty dirs). (Nuno) - Fixed bug #39454 (Returning a SOAP array segfaults PHP). (Dmitry) - Fixed bug #39445 (Calling debug_backtrace() in the __toString() function -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php