iliaa Wed Oct 10 00:35:52 2007 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/standard url_scanner_ex.c url_scanner_ex.re /php-src NEWS Log: MFB: Fixed bug #42869 (automatic session id insertion adds sessions id to non-local forms)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/url_scanner_ex.c?r1=1.95.2.4.2.3&r2=1.95.2.4.2.4&diff_format=u Index: php-src/ext/standard/url_scanner_ex.c diff -u php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.3 php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.4 --- php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.3 Wed Jun 6 12:27:24 2007 +++ php-src/ext/standard/url_scanner_ex.c Wed Oct 10 00:35:52 2007 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.11.0 on Tue Jun 5 19:51:02 2007 */ +/* Generated by re2c 0.11.0 on Tue Oct 9 20:35:35 2007 */ #line 1 "ext/standard/url_scanner_ex.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.c,v 1.95.2.4.2.3 2007/06/06 12:27:24 nlopess Exp $ */ +/* $Id: url_scanner_ex.c,v 1.95.2.4.2.4 2007/10/10 00:35:52 iliaa Exp $ */ #include "php.h" @@ -109,78 +109,48 @@ q = (p = url->c) + url->len; scan: + +#line 114 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 0, 128, 128, 128, 128, 0, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - -#line 149 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy8; - } - if(yych <= '9') goto yy6; - if(yych >= ';') goto yy4; - ++YYCURSOR; + YYCTYPE yych; + + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '#': goto yy6; + case ':': goto yy2; + case '?': goto yy4; + default: goto yy8; + } +yy2: + ++YYCURSOR; #line 116 "ext/standard/url_scanner_ex.re" - { smart_str_append(dest, url); return; } -#line 163 "ext/standard/url_scanner_ex.c" + { smart_str_append(dest, url); return; } +#line 130 "ext/standard/url_scanner_ex.c" yy4: - ++YYCURSOR; + ++YYCURSOR; #line 117 "ext/standard/url_scanner_ex.re" - { sep = separator; goto scan; } -#line 168 "ext/standard/url_scanner_ex.c" + { sep = separator; goto scan; } +#line 135 "ext/standard/url_scanner_ex.c" yy6: - ++YYCURSOR; + ++YYCURSOR; #line 118 "ext/standard/url_scanner_ex.re" - { bash = p - 1; goto done; } -#line 173 "ext/standard/url_scanner_ex.c" + { bash = p - 1; goto done; } +#line 140 "ext/standard/url_scanner_ex.c" yy8: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy8; - } -#line 119 "ext/standard/url_scanner_ex.re" - { goto scan; } -#line 183 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '#': + case ':': + case '?': goto yy10; + default: goto yy8; } +yy10: +#line 119 "ext/standard/url_scanner_ex.re" + { goto scan; } +#line 154 "ext/standard/url_scanner_ex.c" } #line 120 "ext/standard/url_scanner_ex.re" @@ -271,16 +241,29 @@ if (ctx->form_app.len > 0) { switch (ctx->tag.len) { - -#define RECOGNIZE(x) do { \ - case sizeof(x)-1: \ - if (strncasecmp(ctx->tag.c, x, sizeof(x)-1) == 0) \ - doit = 1; \ - break; \ -} while (0) - - RECOGNIZE("form"); - RECOGNIZE("fieldset"); + case sizeof("form") - 1: + if (!strncasecmp(ctx->tag.c, "form", sizeof("form") - 1)) { + doit = 1; + } + if (doit && ctx->val.c && ctx->lookup_data && *ctx->lookup_data) { + char *e, *p = zend_memnstr(ctx->val.c, "://", sizeof("://") - 1, ctx->val.c + ctx->val.len); + if (p) { + e = memchr(p, '/', (ctx->val.c + ctx->val.len) - p); + if (!e) { + e = ctx->val.c + ctx->val.len; + } + if ((e - p) && strncasecmp(p, ctx->lookup_data, (e - p))) { + doit = 0; + } + } + } + break; + + case sizeof("fieldset") - 1: + if (!strncasecmp(ctx->tag.c, "fieldset", sizeof("fieldset") - 1)) { + doit = 1; + } + break; } if (doit) @@ -288,8 +271,6 @@ } } - - /* * HANDLE_TAG copies the HTML Tag and checks whether we * have that tag in our table. If we might modify it, @@ -350,144 +331,177 @@ state_plain: start = YYCURSOR; + +#line 336 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 0, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - }; - -#line 390 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy15; - } - ++YYCURSOR; -#line 288 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } -#line 401 "ext/standard/url_scanner_ex.c" + YYCTYPE yych; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '<': goto yy13; + default: goto yy15; + } +yy13: + ++YYCURSOR; +#line 299 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } +#line 349 "ext/standard/url_scanner_ex.c" yy15: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy15; - } -#line 289 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain; } -#line 411 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '<': goto yy17; + default: goto yy15; } +yy17: +#line 300 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); goto state_plain; } +#line 361 "ext/standard/url_scanner_ex.c" } -#line 290 "ext/standard/url_scanner_ex.re" +#line 301 "ext/standard/url_scanner_ex.re" state_tag: start = YYCURSOR; + +#line 369 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - -#line 455 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych <= '@') { - if(yych != ':') goto yy22; - } else { - if(yych <= 'Z') goto yy20; - if(yych <= '`') goto yy22; - if(yych >= '{') goto yy22; - } + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch(yych) { + case ':': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy20; + default: goto yy22; + } yy20: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy25; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy25; yy21: -#line 295 "ext/standard/url_scanner_ex.re" - { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } -#line 474 "ext/standard/url_scanner_ex.c" +#line 306 "ext/standard/url_scanner_ex.re" + { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } +#line 437 "ext/standard/url_scanner_ex.c" yy22: - ++YYCURSOR; -#line 296 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 479 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; +#line 307 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); goto state_plain_begin; } +#line 442 "ext/standard/url_scanner_ex.c" yy24: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy25: - if(yybm[0+yych] & 128) { - goto yy24; - } - goto yy21; + switch(yych) { + case ':': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy24; + default: goto yy21; } } -#line 297 "ext/standard/url_scanner_ex.re" +#line 308 "ext/standard/url_scanner_ex.re" state_next_arg_begin: @@ -495,417 +509,450 @@ state_next_arg: start = YYCURSOR; + +#line 514 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - -#line 535 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy34; - if(yych <= 0x0B) goto yy30; - goto yy34; - } else { - if(yych <= 0x0D) goto yy30; - if(yych <= 0x1F) goto yy34; - goto yy30; - } - } else { - if(yych <= '@') { - if(yych != '>') goto yy34; - } else { - if(yych <= 'Z') goto yy32; - if(yych <= '`') goto yy34; - if(yych <= 'z') goto yy32; - goto yy34; - } - } - ++YYCURSOR; -#line 305 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } -#line 563 "ext/standard/url_scanner_ex.c" + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch(yych) { + case 0x09: + case 0x0A: + case 0x0B: + case 0x0D: + case ' ': goto yy30; + case '>': goto yy28; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy32; + default: goto yy34; + } +yy28: + ++YYCURSOR; +#line 316 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } +#line 584 "ext/standard/url_scanner_ex.c" yy30: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy37; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy37; yy31: -#line 306 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg; } -#line 571 "ext/standard/url_scanner_ex.c" +#line 317 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); goto state_next_arg; } +#line 592 "ext/standard/url_scanner_ex.c" yy32: - ++YYCURSOR; -#line 307 "ext/standard/url_scanner_ex.re" - { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } -#line 576 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; +#line 318 "ext/standard/url_scanner_ex.re" + { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } +#line 597 "ext/standard/url_scanner_ex.c" yy34: - ++YYCURSOR; -#line 308 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_plain_begin; } -#line 581 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; +#line 319 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); goto state_plain_begin; } +#line 602 "ext/standard/url_scanner_ex.c" yy36: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy37: - if(yybm[0+yych] & 128) { - goto yy36; - } - goto yy31; + switch(yych) { + case 0x09: + case 0x0A: + case 0x0B: + case 0x0D: + case ' ': goto yy36; + default: goto yy31; } } -#line 309 "ext/standard/url_scanner_ex.re" +#line 320 "ext/standard/url_scanner_ex.re" state_arg: start = YYCURSOR; + +#line 623 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - -#line 634 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych <= '@') goto yy42; - if(yych <= 'Z') goto yy40; - if(yych <= '`') goto yy42; - if(yych >= '{') goto yy42; + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch(yych) { + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy40; + default: goto yy42; + } yy40: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy45; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy45; yy41: -#line 314 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } -#line 650 "ext/standard/url_scanner_ex.c" +#line 325 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } +#line 690 "ext/standard/url_scanner_ex.c" yy42: - ++YYCURSOR; -#line 315 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } -#line 655 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; +#line 326 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } +#line 695 "ext/standard/url_scanner_ex.c" yy44: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy45: - if(yybm[0+yych] & 128) { - goto yy44; - } - goto yy41; + switch(yych) { + case '-': + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'L': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': goto yy44; + default: goto yy41; } } -#line 316 "ext/standard/url_scanner_ex.re" +#line 327 "ext/standard/url_scanner_ex.re" state_before_val: start = YYCURSOR; + +#line 764 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 128, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - }; - -#line 708 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if(yych == ' ') goto yy48; - if(yych == '=') goto yy50; - goto yy52; + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + switch(yych) { + case ' ': goto yy48; + case '=': goto yy50; + default: goto yy52; + } yy48: - yych = *(YYMARKER = ++YYCURSOR); - if(yych == ' ') goto yy55; - if(yych == '=') goto yy53; + yych = *(YYMARKER = ++YYCURSOR); + switch(yych) { + case ' ': goto yy55; + case '=': goto yy53; + default: goto yy49; + } yy49: -#line 322 "ext/standard/url_scanner_ex.re" - { --YYCURSOR; goto state_next_arg_begin; } -#line 723 "ext/standard/url_scanner_ex.c" +#line 333 "ext/standard/url_scanner_ex.re" + { --YYCURSOR; goto state_next_arg_begin; } +#line 784 "ext/standard/url_scanner_ex.c" yy50: - ++YYCURSOR; - yych = *YYCURSOR; - goto yy54; + ++YYCURSOR; + yych = *YYCURSOR; + goto yy54; yy51: -#line 321 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } -#line 731 "ext/standard/url_scanner_ex.c" +#line 332 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } +#line 792 "ext/standard/url_scanner_ex.c" yy52: - yych = *++YYCURSOR; - goto yy49; + yych = *++YYCURSOR; + goto yy49; yy53: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy54: - if(yybm[0+yych] & 128) { - goto yy53; - } - goto yy51; + switch(yych) { + case ' ': goto yy53; + default: goto yy51; + } yy55: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yych == ' ') goto yy55; - if(yych == '=') goto yy53; - YYCURSOR = YYMARKER; - goto yy49; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case ' ': goto yy55; + case '=': goto yy53; + default: goto yy57; } +yy57: + YYCURSOR = YYMARKER; + goto yy49; } -#line 323 "ext/standard/url_scanner_ex.re" +#line 334 "ext/standard/url_scanner_ex.re" state_val: start = YYCURSOR; + +#line 825 "ext/standard/url_scanner_ex.c" { - static unsigned char yybm[] = { - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 160, 160, 248, 248, 160, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 160, 248, 56, 248, 248, 248, 248, 200, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 0, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, - }; - -#line 796 "ext/standard/url_scanner_ex.c" - { - YYCTYPE yych; - if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); - yych = *YYCURSOR; - if(yych <= ' ') { - if(yych <= 0x0C) { - if(yych <= 0x08) goto yy63; - if(yych <= 0x0A) goto yy64; - goto yy63; - } else { - if(yych <= 0x0D) goto yy64; - if(yych <= 0x1F) goto yy63; - goto yy64; - } - } else { - if(yych <= '&') { - if(yych != '"') goto yy63; - } else { - if(yych <= '\'') goto yy62; - if(yych == '>') goto yy64; - goto yy63; - } - } - yych = *(YYMARKER = ++YYCURSOR); - goto yy77; + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); + yych = *YYCURSOR; + switch(yych) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': + case '>': goto yy64; + case '"': goto yy60; + case '\'': goto yy62; + default: goto yy63; + } +yy60: + yych = *(YYMARKER = ++YYCURSOR); + goto yy77; yy61: -#line 331 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } -#line 825 "ext/standard/url_scanner_ex.c" +#line 342 "ext/standard/url_scanner_ex.re" + { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } +#line 846 "ext/standard/url_scanner_ex.c" yy62: - yych = *(YYMARKER = ++YYCURSOR); - goto yy69; + yych = *(YYMARKER = ++YYCURSOR); + goto yy69; yy63: - yych = *++YYCURSOR; - goto yy67; + yych = *++YYCURSOR; + goto yy67; yy64: - ++YYCURSOR; -#line 332 "ext/standard/url_scanner_ex.re" - { passthru(STD_ARGS); goto state_next_arg_begin; } -#line 836 "ext/standard/url_scanner_ex.c" + ++YYCURSOR; +#line 343 "ext/standard/url_scanner_ex.re" + { passthru(STD_ARGS); goto state_next_arg_begin; } +#line 857 "ext/standard/url_scanner_ex.c" yy66: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; yy67: - if(yybm[0+yych] & 8) { - goto yy66; - } - goto yy61; + switch(yych) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': + case '>': goto yy61; + default: goto yy66; + } yy68: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + YYMARKER = ++YYCURSOR; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; yy69: - if(yybm[0+yych] & 16) { - goto yy68; - } - if(yych <= '&') goto yy72; - if(yych >= '(') goto yy61; - ++YYCURSOR; - if(yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy66; - } + switch(yych) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': goto yy72; + case '\'': goto yy70; + case '>': goto yy61; + default: goto yy68; + } +yy70: + ++YYCURSOR; + switch((yych = *YYCURSOR)) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': + case '>': goto yy71; + default: goto yy66; + } yy71: -#line 330 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } -#line 863 "ext/standard/url_scanner_ex.c" +#line 341 "ext/standard/url_scanner_ex.re" + { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } +#line 898 "ext/standard/url_scanner_ex.c" yy72: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 32) { - goto yy72; - } - if(yych <= '=') goto yy75; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '\'': goto yy75; + case '>': goto yy74; + default: goto yy72; + } yy74: - YYCURSOR = YYMARKER; - goto yy61; + YYCURSOR = YYMARKER; + goto yy61; yy75: - yych = *++YYCURSOR; - goto yy71; + yych = *++YYCURSOR; + goto yy71; yy76: - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; + YYMARKER = ++YYCURSOR; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; yy77: - if(yybm[0+yych] & 64) { - goto yy76; - } - if(yych <= '!') goto yy80; - if(yych >= '#') goto yy61; - ++YYCURSOR; - if(yybm[0+(yych = *YYCURSOR)] & 8) { - goto yy66; - } + switch(yych) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': goto yy80; + case '"': goto yy78; + case '>': goto yy61; + default: goto yy76; + } +yy78: + ++YYCURSOR; + switch((yych = *YYCURSOR)) { + case 0x09: + case 0x0A: + case 0x0D: + case ' ': + case '>': goto yy79; + default: goto yy66; + } yy79: -#line 329 "ext/standard/url_scanner_ex.re" - { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } -#line 895 "ext/standard/url_scanner_ex.c" +#line 340 "ext/standard/url_scanner_ex.re" + { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } +#line 941 "ext/standard/url_scanner_ex.c" yy80: - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if(yybm[0+yych] & 128) { - goto yy80; - } - if(yych >= '>') goto yy74; - ++YYCURSOR; - yych = *YYCURSOR; - goto yy79; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych) { + case '"': goto yy82; + case '>': goto yy74; + default: goto yy80; } +yy82: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy79; } -#line 333 "ext/standard/url_scanner_ex.re" +#line 344 "ext/standard/url_scanner_ex.re" stop: http://cvs.php.net/viewvc.cgi/php-src/ext/standard/url_scanner_ex.re?r1=1.76.2.2.2.1&r2=1.76.2.2.2.2&diff_format=u Index: php-src/ext/standard/url_scanner_ex.re diff -u php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.1 php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.2 --- php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.1 Wed Jun 6 00:00:27 2007 +++ php-src/ext/standard/url_scanner_ex.re Wed Oct 10 00:35:52 2007 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.re,v 1.76.2.2.2.1 2007/06/06 00:00:27 iliaa Exp $ */ +/* $Id: url_scanner_ex.re,v 1.76.2.2.2.2 2007/10/10 00:35:52 iliaa Exp $ */ #include "php.h" @@ -205,16 +205,29 @@ if (ctx->form_app.len > 0) { switch (ctx->tag.len) { - -#define RECOGNIZE(x) do { \ - case sizeof(x)-1: \ - if (strncasecmp(ctx->tag.c, x, sizeof(x)-1) == 0) \ - doit = 1; \ - break; \ -} while (0) - - RECOGNIZE("form"); - RECOGNIZE("fieldset"); + case sizeof("form") - 1: + if (!strncasecmp(ctx->tag.c, "form", sizeof("form") - 1)) { + doit = 1; + } + if (doit && ctx->val.c && ctx->lookup_data && *ctx->lookup_data) { + char *e, *p = zend_memnstr(ctx->val.c, "://", sizeof("://") - 1, ctx->val.c + ctx->val.len); + if (p) { + e = memchr(p, '/', (ctx->val.c + ctx->val.len) - p); + if (!e) { + e = ctx->val.c + ctx->val.len; + } + if ((e - p) && strncasecmp(p, ctx->lookup_data, (e - p))) { + doit = 0; + } + } + } + break; + + case sizeof("fieldset") - 1: + if (!strncasecmp(ctx->tag.c, "fieldset", sizeof("fieldset") - 1)) { + doit = 1; + } + break; } if (doit) @@ -222,8 +235,6 @@ } } - - /* * HANDLE_TAG copies the HTML Tag and checks whether we * have that tag in our table. If we might modify it, http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.972&r2=1.2027.2.547.2.973&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.972 php-src/NEWS:1.2027.2.547.2.973 --- php-src/NEWS:1.2027.2.547.2.972 Mon Oct 8 18:27:18 2007 +++ php-src/NEWS Wed Oct 10 00:35:52 2007 @@ -34,6 +34,8 @@ - Fixed bug #42890 (Constant "LIST" defined by mysqlclient and c-client). (Andrey) +- Fixed bug #42869 (automatic session id insertion adds sessions id to + non-local forms). (Ilia) - Fixed bug #42818 ($foo = clone(array()); leaks memory). (Dmitry) - Fixed bug #42817 (clone() on a non-object does not result in a fatal error). (Ilia)
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php