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