-/* Generated by re2c 0.11.0 on Mon Feb 5 02:54:33 2007 */
+/* Generated by re2c 0.11.0 on Mon Feb 5 14:06:48 2007 */
#line 1 "ext/phar/phar_path_check.re"
/*
+----------------------------------------------------------------------+
if(yych <= '.') goto yy18;
if(yych <= '/') goto yy20;
yy3:
-#line 92 "ext/phar/phar_path_check.re"
+#line 97 "ext/phar/phar_path_check.re"
{
goto loop;
}
(*s)++;
(*len)--;
}
+ if ((p - (const unsigned char*)*s) - 1 != *len)
+ {
+ *error ="illegal character";
+ return pcr_err_illegal_char;
+ }
*error = NULL;
return pcr_is_ok;
}
-#line 138 "ext/phar/phar_path_check.c"
+#line 143 "ext/phar/phar_path_check.c"
yy15:
yych = *++YYCURSOR;
goto yy3;
*error = "empty directory";
return pcr_err_empty_entry;
}
-#line 149 "ext/phar/phar_path_check.c"
+#line 154 "ext/phar/phar_path_check.c"
yy18:
yych = *++YYCURSOR;
if(yych <= 0x00) goto yy23;
*error = "double slash";
return pcr_err_double_slash;
}
-#line 166 "ext/phar/phar_path_check.c"
+#line 171 "ext/phar/phar_path_check.c"
yy22:
yych = *++YYCURSOR;
if(yych <= 0x00) goto yy25;
*error = "current directory reference";
return pcr_err_curr_dir;
}
-#line 179 "ext/phar/phar_path_check.c"
+#line 184 "ext/phar/phar_path_check.c"
yy25:
++YYCURSOR;
#line 52 "ext/phar/phar_path_check.re"
*error = "upper directory reference";
return pcr_err_up_dir;
}
-#line 187 "ext/phar/phar_path_check.c"
+#line 192 "ext/phar/phar_path_check.c"
}
}
-#line 95 "ext/phar/phar_path_check.re"
+#line 100 "ext/phar/phar_path_check.re"
}
file_put_contents($pname . '/' . $check, "error");
}
+$phar = new Phar($fname);
+$checks = array("a\0");
+foreach($checks as $check)
+{
+ try
+ {
+ $phar[$check] = 'error';
+ }
+ catch(Exception $e)
+ {
+ echo 'Exception: ' . $e->getMessage() . "\n";
+ }
+}
+
?>
===DONE===
--CLEAN--
Error: file_put_contents(phar://%s/a/..): failed to open stream: phar error: invalid path "a/.." contains upper directory reference
Error: file_put_contents(phar://%s/a/): failed to open stream: phar error: invalid path "a/" contains empty directory
Error: file_put_contents(phar://%s/b//a.php): failed to open stream: phar error: invalid path "b//a.php" contains double slash
+Exception: Entry a does not exist and cannot be created: phar error: invalid path "a" contains illegal character
===DONE===