summaryrefslogtreecommitdiff
path: root/ext/phar/phar_path_check.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/phar/phar_path_check.c')
-rw-r--r--ext/phar/phar_path_check.c247
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"
}