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/pdo pdo_sql_parser.re pdo_sql_parser.c /php-src NEWS 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.4&r2=1.28.2.4.2.5&diff_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.5&r2=1.35.2.6.2.6&diff_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.c Tue 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 = *(YYMARKER = ++YYCURSOR); + yych = *++YYCURSOR; if(yybm[0+yych] & 16) { goto yy19; } - if(yych <= 0x00) goto yy3; if(yych == '\'') goto yy21; - goto yy24; + goto yy23; yy5: yych = *++YYCURSOR; if(yybm[0+yych] & 4) { @@ -147,9 +142,9 @@ if(yybm[0+(yych = *YYCURSOR)] & 4) { goto yy13; } -#line 62 "ext/pdo/pdo_sql_parser.re" +#line 60 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND_POS); } -#line 153 "ext/pdo/pdo_sql_parser.c" +#line 148 "ext/pdo/pdo_sql_parser.c" yy8: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -157,14 +152,14 @@ if(yybm[0+yych] & 2) { goto yy8; } -#line 64 "ext/pdo/pdo_sql_parser.re" +#line 62 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 163 "ext/pdo/pdo_sql_parser.c" +#line 158 "ext/pdo/pdo_sql_parser.c" yy11: ++YYCURSOR; -#line 65 "ext/pdo/pdo_sql_parser.re" +#line 63 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_EOI); } -#line 168 "ext/pdo/pdo_sql_parser.c" +#line 163 "ext/pdo/pdo_sql_parser.c" yy13: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -172,10 +167,9 @@ if(yybm[0+yych] & 4) { goto yy13; } -yy15: -#line 60 "ext/pdo/pdo_sql_parser.re" +#line 58 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 179 "ext/pdo/pdo_sql_parser.c" +#line 173 "ext/pdo/pdo_sql_parser.c" yy16: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -183,106 +177,63 @@ if(yybm[0+yych] & 8) { goto yy16; } -#line 61 "ext/pdo/pdo_sql_parser.re" +#line 59 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_BIND); } -#line 189 "ext/pdo/pdo_sql_parser.c" +#line 183 "ext/pdo/pdo_sql_parser.c" yy19: - yyaccept = 1; - YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yybm[0+yych] & 16) { goto yy19; } - if(yych <= '\'') { - if(yych <= 0x00) goto yy15; - if(yych <= '&') goto yy23; - } else { - if(yych == '\\') goto yy26; - goto yy23; - } + if(yych != '\'') goto yy23; yy21: ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { goto yy13; } yy22: -#line 59 "ext/pdo/pdo_sql_parser.re" +#line 57 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 213 "ext/pdo/pdo_sql_parser.c" +#line 199 "ext/pdo/pdo_sql_parser.c" yy23: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy24: if(yybm[0+yych] & 32) { goto yy23; } - if(yych <= 0x00) goto yy25; - if(yych <= '[') goto yy27; - goto yy26; -yy25: - YYCURSOR = YYMARKER; - if(yyaccept <= 0) { - goto yy3; - } else { - goto yy15; - } -yy26: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych <= 0x00) goto yy25; - goto yy23; -yy27: yych = *++YYCURSOR; goto yy22; -yy28: +yy26: ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { goto yy13; } -yy29: -#line 58 "ext/pdo/pdo_sql_parser.re" +yy27: +#line 56 "ext/pdo/pdo_sql_parser.re" { RET(PDO_PARSER_TEXT); } -#line 249 "ext/pdo/pdo_sql_parser.c" -yy30: - yyaccept = 1; - YYMARKER = ++YYCURSOR; +#line 217 "ext/pdo/pdo_sql_parser.c" +yy28: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yybm[0+yych] & 64) { - goto yy30; + goto yy28; } - if(yych <= '"') { - if(yych <= 0x00) goto yy15; - if(yych >= '"') goto yy28; - } else { - if(yych == '\\') goto yy34; - } -yy32: + if(yych == '"') goto yy26; +yy30: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy33: if(yybm[0+yych] & 128) { - goto yy32; + goto yy30; } - if(yych <= 0x00) goto yy25; - if(yych <= '[') goto yy35; -yy34: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych <= 0x00) goto yy25; - goto yy32; -yy35: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy29; + goto yy27; } } -#line 66 "ext/pdo/pdo_sql_parser.re" +#line 64 "ext/pdo/pdo_sql_parser.re" } http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.403&r2=1.2027.2.547.2.404&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.403 php-src/NEWS:1.2027.2.547.2.404 --- php-src/NEWS:1.2027.2.547.2.403 Tue Dec 5 12:05:43 2006 +++ php-src/NEWS Tue Dec 5 18:04:59 2006 @@ -147,6 +147,8 @@ (Ilia) - Fixed bug #36975 (natcasesort() causes array_pop() to misbehave). (Hannes) - Fixed bug #36812 (pg_execute() modifies input array). (Ilia) +- Fixed bug #36798 (Error parsing named parameters with queries containing + high-ascii chars). (Ilia) - Fixed bug #36644 (possible crash in variant_date_from_timestamp()). (Ilia) - Fixed bug #33282 (Re-assignment by reference does not clear the is_ref flag) (Ilia,Dmitry, Matt Wilmas) http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/tests/bug_36798.phpt?view=markup&rev=1.1 Index: php-src/ext/pdo/tests/bug_36798.phpt +++ php-src/ext/pdo/tests/bug_36798.phpt
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php