diff options
Diffstat (limited to 'ext/phar/phar_path_check.c')
-rw-r--r-- | ext/phar/phar_path_check.c | 247 |
1 files changed, 183 insertions, 64 deletions
diff --git a/ext/phar/phar_path_check.c b/ext/phar/phar_path_check.c index db97efcbe3..ebf4aac58b 100644 --- a/ext/phar/phar_path_check.c +++ b/ext/phar/phar_path_check.c @@ -46,60 +46,91 @@ loop: #line 47 "ext/phar/phar_path_check.c" { YYCTYPE yych; + unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if (yych <= '.') { - if (yych <= '\n') { - if (yych <= 0x00) goto yy13; - if (yych <= '\t') goto yy10; - goto yy12; + if (yych <= '[') { + if (yych <= ')') { + if (yych <= '\t') { + if (yych <= 0x00) goto yy21; + goto yy23; + } else { + if (yych <= '\n') goto yy2; + if (yych <= 0x19) goto yy23; + goto yy11; + } } else { - if (yych <= 0x19) goto yy10; - if (yych == '*') goto yy6; - goto yy15; + if (yych <= '/') { + if (yych <= '*') goto yy7; + if (yych <= '.') goto yy11; + goto yy3; + } else { + if (yych == '?') goto yy9; + goto yy11; + } } } else { - if (yych <= '?') { - if (yych <= '/') goto yy2; - if (yych <= '>') goto yy15; - goto yy8; + if (yych <= 0xEC) { + if (yych <= 0xC1) { + if (yych <= '\\') goto yy5; + if (yych <= 0x7F) goto yy11; + goto yy23; + } else { + if (yych <= 0xDF) goto yy12; + if (yych <= 0xE0) goto yy14; + goto yy15; + } } else { - if (yych == '\\') goto yy4; - if (yych <= 0x7F) goto yy15; - goto yy10; + if (yych <= 0xF0) { + if (yych <= 0xED) goto yy16; + if (yych <= 0xEF) goto yy17; + goto yy18; + } else { + if (yych <= 0xF3) goto yy19; + if (yych <= 0xF4) goto yy20; + goto yy23; + } } } yy2: - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') goto yy3; - if (yych <= '.') goto yy16; - if (yych <= '/') goto yy18; + YYCURSOR = YYMARKER; + if (yyaccept <= 0) { + goto yy4; + } else { + goto yy13; + } yy3: -#line 93 "ext/phar/phar_path_check.re" + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '-') goto yy4; + if (yych <= '.') goto yy35; + if (yych <= '/') goto yy36; +yy4: +#line 88 "ext/phar/phar_path_check.re" { goto loop; } -#line 84 "ext/phar/phar_path_check.c" -yy4: +#line 115 "ext/phar/phar_path_check.c" +yy5: ++YYCURSOR; -#line 60 "ext/phar/phar_path_check.re" +#line 72 "ext/phar/phar_path_check.re" { *error = "back-slash"; return pcr_err_back_slash; } -#line 92 "ext/phar/phar_path_check.c" -yy6: +#line 123 "ext/phar/phar_path_check.c" +yy7: ++YYCURSOR; -#line 64 "ext/phar/phar_path_check.re" +#line 76 "ext/phar/phar_path_check.re" { *error = "star"; return pcr_err_star; } -#line 100 "ext/phar/phar_path_check.c" -yy8: +#line 131 "ext/phar/phar_path_check.c" +yy9: ++YYCURSOR; -#line 68 "ext/phar/phar_path_check.re" +#line 80 "ext/phar/phar_path_check.re" { if (**s == '/') { (*s)++; @@ -108,22 +139,66 @@ yy8: *error = NULL; return pcr_use_query; } -#line 112 "ext/phar/phar_path_check.c" -yy10: - ++YYCURSOR; +#line 143 "ext/phar/phar_path_check.c" yy11: -#line 76 "ext/phar/phar_path_check.re" + yych = *++YYCURSOR; + goto yy4; +yy12: + ++YYCURSOR; + if ((yych = *YYCURSOR) <= 0x7F) goto yy13; + if (yych <= 0xBF) goto yy26; +yy13: +#line 104 "ext/phar/phar_path_check.re" { *error ="illegal character"; return pcr_err_illegal_char; } -#line 121 "ext/phar/phar_path_check.c" -yy12: - yych = *++YYCURSOR; - goto yy11; -yy13: +#line 157 "ext/phar/phar_path_check.c" +yy14: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x9F) goto yy13; + if (yych <= 0xBF) goto yy34; + goto yy13; +yy15: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy13; + if (yych <= 0xBF) goto yy33; + goto yy13; +yy16: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy13; + if (yych <= 0x9F) goto yy32; + goto yy13; +yy17: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy13; + if (yych <= 0xBF) goto yy31; + goto yy13; +yy18: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x8F) goto yy13; + if (yych <= 0xBF) goto yy29; + goto yy13; +yy19: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy13; + if (yych <= 0xBF) goto yy27; + goto yy13; +yy20: + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x7F) goto yy13; + if (yych <= 0x8F) goto yy24; + goto yy13; +yy21: ++YYCURSOR; -#line 80 "ext/phar/phar_path_check.re" +#line 91 "ext/phar/phar_path_check.re" { if (**s == '/') { (*s)++; @@ -137,49 +212,93 @@ yy13: *error = NULL; return pcr_is_ok; } -#line 141 "ext/phar/phar_path_check.c" -yy15: +#line 216 "ext/phar/phar_path_check.c" +yy23: yych = *++YYCURSOR; - goto yy3; -yy16: + goto yy13; +yy24: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy21; - if (yych <= '-') goto yy17; - if (yych <= '.') goto yy20; - if (yych <= '/') goto yy21; -yy17: - YYCURSOR = YYMARKER; - goto yy3; -yy18: + if (yych <= 0x7F) goto yy2; + if (yych >= 0xC0) goto yy2; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych >= 0xC0) goto yy2; +yy26: + yych = *++YYCURSOR; + goto yy4; +yy27: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych >= 0xC0) goto yy2; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy29: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych >= 0xC0) goto yy2; + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy31: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy32: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy33: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy34: + yych = *++YYCURSOR; + if (yych <= 0x7F) goto yy2; + if (yych <= 0xBF) goto yy26; + goto yy2; +yy35: + yych = *++YYCURSOR; + if (yych <= 0x00) goto yy39; + if (yych <= '-') goto yy2; + if (yych <= '.') goto yy38; + if (yych <= '/') goto yy39; + goto yy2; +yy36: ++YYCURSOR; -#line 48 "ext/phar/phar_path_check.re" +#line 60 "ext/phar/phar_path_check.re" { *error = "double slash"; return pcr_err_double_slash; } -#line 161 "ext/phar/phar_path_check.c" -yy20: +#line 280 "ext/phar/phar_path_check.c" +yy38: yych = *++YYCURSOR; - if (yych <= 0x00) goto yy23; - if (yych == '/') goto yy23; - goto yy17; -yy21: + if (yych <= 0x00) goto yy41; + if (yych == '/') goto yy41; + goto yy2; +yy39: ++YYCURSOR; -#line 56 "ext/phar/phar_path_check.re" +#line 68 "ext/phar/phar_path_check.re" { *error = "current directory reference"; return pcr_err_curr_dir; } -#line 174 "ext/phar/phar_path_check.c" -yy23: +#line 293 "ext/phar/phar_path_check.c" +yy41: ++YYCURSOR; -#line 52 "ext/phar/phar_path_check.re" +#line 64 "ext/phar/phar_path_check.re" { *error = "upper directory reference"; return pcr_err_up_dir; } -#line 182 "ext/phar/phar_path_check.c" +#line 301 "ext/phar/phar_path_check.c" } -#line 96 "ext/phar/phar_path_check.re" +#line 108 "ext/phar/phar_path_check.re" } |