mirror of
https://github.com/php/php-src.git
synced 2026-04-02 05:32:28 +02:00
Use 'S' for escaped binary strings and 's' for non-escaped.
This commit is contained in:
@@ -718,7 +718,7 @@ static inline void php_var_serialize_string(smart_str *buf, char *str, int len)
|
||||
unsigned char c;
|
||||
int i;
|
||||
|
||||
smart_str_appendl(buf, "s:", 2);
|
||||
smart_str_appendl(buf, "S:", 2);
|
||||
smart_str_append_long(buf, len);
|
||||
smart_str_appendl(buf, ":\"", 2);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Generated by re2c 0.9.12 on Fri Dec 1 11:18:14 2006 */
|
||||
/* Generated by re2c 0.9.12 on Thu Dec 14 15:32:34 2006 */
|
||||
#line 1 "ext/standard/var_unserializer.re"
|
||||
/*
|
||||
+----------------------------------------------------------------------+
|
||||
@@ -468,110 +468,115 @@ yy0:
|
||||
if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
|
||||
yych = *YYCURSOR;
|
||||
switch(yych){
|
||||
case 'C': case 'O': goto yy13;
|
||||
case 'C': case 'O': goto yy14;
|
||||
case 'N': goto yy5;
|
||||
case 'R': goto yy2;
|
||||
case 'U': goto yy10;
|
||||
case 'a': goto yy11;
|
||||
case 'S': goto yy10;
|
||||
case 'U': goto yy11;
|
||||
case 'a': goto yy12;
|
||||
case 'b': goto yy6;
|
||||
case 'd': goto yy8;
|
||||
case 'i': goto yy7;
|
||||
case 'o': goto yy12;
|
||||
case 'o': goto yy13;
|
||||
case 'r': goto yy4;
|
||||
case 's': goto yy9;
|
||||
case '}': goto yy14;
|
||||
default: goto yy16;
|
||||
case '}': goto yy15;
|
||||
default: goto yy17;
|
||||
}
|
||||
yy2: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy95;
|
||||
if(yych == ':') goto yy103;
|
||||
goto yy3;
|
||||
yy3:
|
||||
#line 725 "ext/standard/var_unserializer.re"
|
||||
#line 753 "ext/standard/var_unserializer.re"
|
||||
{ return 0; }
|
||||
#line 493 "ext/standard/var_unserializer.c"
|
||||
#line 494 "ext/standard/var_unserializer.c"
|
||||
yy4: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy89;
|
||||
if(yych == ':') goto yy97;
|
||||
goto yy3;
|
||||
yy5: yych = *++YYCURSOR;
|
||||
if(yych == ';') goto yy87;
|
||||
if(yych == ';') goto yy95;
|
||||
goto yy3;
|
||||
yy6: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy83;
|
||||
if(yych == ':') goto yy91;
|
||||
goto yy3;
|
||||
yy7: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy77;
|
||||
if(yych == ':') goto yy85;
|
||||
goto yy3;
|
||||
yy8: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy53;
|
||||
if(yych == ':') goto yy61;
|
||||
goto yy3;
|
||||
yy9: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy46;
|
||||
if(yych == ':') goto yy54;
|
||||
goto yy3;
|
||||
yy10: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy39;
|
||||
if(yych == ':') goto yy47;
|
||||
goto yy3;
|
||||
yy11: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy32;
|
||||
if(yych == ':') goto yy40;
|
||||
goto yy3;
|
||||
yy12: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy25;
|
||||
if(yych == ':') goto yy33;
|
||||
goto yy3;
|
||||
yy13: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy17;
|
||||
if(yych == ':') goto yy26;
|
||||
goto yy3;
|
||||
yy14: ++YYCURSOR;
|
||||
goto yy15;
|
||||
yy15:
|
||||
#line 719 "ext/standard/var_unserializer.re"
|
||||
yy14: yyaccept = 0;
|
||||
yych = *(YYMARKER = ++YYCURSOR);
|
||||
if(yych == ':') goto yy18;
|
||||
goto yy3;
|
||||
yy15: ++YYCURSOR;
|
||||
goto yy16;
|
||||
yy16:
|
||||
#line 747 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
/* this is the case where we have less data than planned */
|
||||
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data");
|
||||
return 0; /* not sure if it should be 0 or 1 here? */
|
||||
}
|
||||
#line 542 "ext/standard/var_unserializer.c"
|
||||
yy16: yych = *++YYCURSOR;
|
||||
goto yy3;
|
||||
#line 547 "ext/standard/var_unserializer.c"
|
||||
yy17: yych = *++YYCURSOR;
|
||||
goto yy3;
|
||||
yy18: yych = *++YYCURSOR;
|
||||
if(yybm[0+yych] & 128) {
|
||||
goto yy20;
|
||||
goto yy21;
|
||||
}
|
||||
if(yych == '+') goto yy19;
|
||||
goto yy18;
|
||||
yy18: YYCURSOR = YYMARKER;
|
||||
if(yych == '+') goto yy20;
|
||||
goto yy19;
|
||||
yy19: YYCURSOR = YYMARKER;
|
||||
switch(yyaccept){
|
||||
case 0: goto yy3;
|
||||
}
|
||||
yy19: yych = *++YYCURSOR;
|
||||
yy20: yych = *++YYCURSOR;
|
||||
if(yybm[0+yych] & 128) {
|
||||
goto yy20;
|
||||
goto yy21;
|
||||
}
|
||||
goto yy18;
|
||||
yy20: ++YYCURSOR;
|
||||
goto yy19;
|
||||
yy21: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy21;
|
||||
yy21: if(yybm[0+yych] & 128) {
|
||||
goto yy20;
|
||||
}
|
||||
if(yych != ':') goto yy18;
|
||||
goto yy22;
|
||||
yy22: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy18;
|
||||
yy22: if(yybm[0+yych] & 128) {
|
||||
goto yy21;
|
||||
}
|
||||
if(yych != ':') goto yy19;
|
||||
goto yy23;
|
||||
yy23: ++YYCURSOR;
|
||||
yy23: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy19;
|
||||
goto yy24;
|
||||
yy24:
|
||||
#line 606 "ext/standard/var_unserializer.re"
|
||||
yy24: ++YYCURSOR;
|
||||
goto yy25;
|
||||
yy25:
|
||||
#line 634 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, len2, len3, maxlen;
|
||||
long elements;
|
||||
@@ -684,36 +689,36 @@ yy24:
|
||||
|
||||
return object_common2(UNSERIALIZE_PASSTHRU, elements);
|
||||
}
|
||||
#line 688 "ext/standard/var_unserializer.c"
|
||||
yy25: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy18;
|
||||
goto yy26;
|
||||
} else {
|
||||
if(yych <= '-') goto yy26;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy27;
|
||||
goto yy18;
|
||||
}
|
||||
#line 693 "ext/standard/var_unserializer.c"
|
||||
yy26: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy27;
|
||||
yy27: ++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy19;
|
||||
goto yy27;
|
||||
} else {
|
||||
if(yych <= '-') goto yy27;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy28;
|
||||
goto yy19;
|
||||
}
|
||||
yy27: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy28;
|
||||
yy28: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy28;
|
||||
yy28: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy27;
|
||||
if(yych >= ';') goto yy18;
|
||||
goto yy29;
|
||||
yy29: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy18;
|
||||
yy29: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy28;
|
||||
if(yych >= ';') goto yy19;
|
||||
goto yy30;
|
||||
yy30: ++YYCURSOR;
|
||||
yy30: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy19;
|
||||
goto yy31;
|
||||
yy31:
|
||||
#line 598 "ext/standard/var_unserializer.re"
|
||||
yy31: ++YYCURSOR;
|
||||
goto yy32;
|
||||
yy32:
|
||||
#line 626 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
|
||||
INIT_PZVAL(*rval);
|
||||
@@ -721,31 +726,31 @@ yy31:
|
||||
return object_common2(UNSERIALIZE_PASSTHRU,
|
||||
object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR));
|
||||
}
|
||||
#line 725 "ext/standard/var_unserializer.c"
|
||||
yy32: yych = *++YYCURSOR;
|
||||
if(yych == '+') goto yy33;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy34;
|
||||
goto yy18;
|
||||
#line 730 "ext/standard/var_unserializer.c"
|
||||
yy33: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy34;
|
||||
yy34: ++YYCURSOR;
|
||||
if(yych == '+') goto yy34;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy35;
|
||||
goto yy19;
|
||||
yy34: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy35;
|
||||
yy35: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy35;
|
||||
yy35: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy34;
|
||||
if(yych >= ';') goto yy18;
|
||||
goto yy36;
|
||||
yy36: yych = *++YYCURSOR;
|
||||
if(yych != '{') goto yy18;
|
||||
yy36: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy35;
|
||||
if(yych >= ';') goto yy19;
|
||||
goto yy37;
|
||||
yy37: ++YYCURSOR;
|
||||
yy37: yych = *++YYCURSOR;
|
||||
if(yych != '{') goto yy19;
|
||||
goto yy38;
|
||||
yy38:
|
||||
#line 576 "ext/standard/var_unserializer.re"
|
||||
yy38: ++YYCURSOR;
|
||||
goto yy39;
|
||||
yy39:
|
||||
#line 604 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
long elements = parse_iv(start + 2);
|
||||
/* use iv() not uiv() in order to check data range */
|
||||
@@ -767,31 +772,31 @@ yy38:
|
||||
|
||||
return finish_nested_data(UNSERIALIZE_PASSTHRU);
|
||||
}
|
||||
#line 771 "ext/standard/var_unserializer.c"
|
||||
yy39: yych = *++YYCURSOR;
|
||||
if(yych == '+') goto yy40;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy41;
|
||||
goto yy18;
|
||||
#line 776 "ext/standard/var_unserializer.c"
|
||||
yy40: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy41;
|
||||
yy41: ++YYCURSOR;
|
||||
if(yych == '+') goto yy41;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy42;
|
||||
goto yy19;
|
||||
yy41: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy42;
|
||||
yy42: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy42;
|
||||
yy42: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy41;
|
||||
if(yych >= ';') goto yy18;
|
||||
goto yy43;
|
||||
yy43: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy18;
|
||||
yy43: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy42;
|
||||
if(yych >= ';') goto yy19;
|
||||
goto yy44;
|
||||
yy44: ++YYCURSOR;
|
||||
yy44: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy19;
|
||||
goto yy45;
|
||||
yy45:
|
||||
#line 547 "ext/standard/var_unserializer.re"
|
||||
yy45: ++YYCURSOR;
|
||||
goto yy46;
|
||||
yy46:
|
||||
#line 575 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, maxlen;
|
||||
UChar *ustr;
|
||||
@@ -820,31 +825,31 @@ yy45:
|
||||
ZVAL_UNICODEL(*rval, ustr, len, 0);
|
||||
return 1;
|
||||
}
|
||||
#line 824 "ext/standard/var_unserializer.c"
|
||||
yy46: yych = *++YYCURSOR;
|
||||
if(yych == '+') goto yy47;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy48;
|
||||
goto yy18;
|
||||
#line 829 "ext/standard/var_unserializer.c"
|
||||
yy47: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy48;
|
||||
yy48: ++YYCURSOR;
|
||||
if(yych == '+') goto yy48;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy49;
|
||||
goto yy19;
|
||||
yy48: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy49;
|
||||
yy49: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy49;
|
||||
yy49: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy48;
|
||||
if(yych >= ';') goto yy18;
|
||||
goto yy50;
|
||||
yy50: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy18;
|
||||
yy50: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy49;
|
||||
if(yych >= ';') goto yy19;
|
||||
goto yy51;
|
||||
yy51: ++YYCURSOR;
|
||||
yy51: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy19;
|
||||
goto yy52;
|
||||
yy52:
|
||||
#line 518 "ext/standard/var_unserializer.re"
|
||||
yy52: ++YYCURSOR;
|
||||
goto yy53;
|
||||
yy53:
|
||||
#line 546 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, maxlen;
|
||||
char *str;
|
||||
@@ -873,95 +878,147 @@ yy52:
|
||||
ZVAL_STRINGL(*rval, str, len, 0);
|
||||
return 1;
|
||||
}
|
||||
#line 877 "ext/standard/var_unserializer.c"
|
||||
yy53: yych = *++YYCURSOR;
|
||||
#line 882 "ext/standard/var_unserializer.c"
|
||||
yy54: yych = *++YYCURSOR;
|
||||
if(yych == '+') goto yy55;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy56;
|
||||
goto yy19;
|
||||
yy55: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy56;
|
||||
yy56: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
||||
yych = *YYCURSOR;
|
||||
goto yy57;
|
||||
yy57: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy56;
|
||||
if(yych >= ';') goto yy19;
|
||||
goto yy58;
|
||||
yy58: yych = *++YYCURSOR;
|
||||
if(yych != '"') goto yy19;
|
||||
goto yy59;
|
||||
yy59: ++YYCURSOR;
|
||||
goto yy60;
|
||||
yy60:
|
||||
#line 518 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
size_t len, maxlen;
|
||||
char *str;
|
||||
|
||||
len = parse_uiv(start + 2);
|
||||
maxlen = max - YYCURSOR;
|
||||
if (maxlen < len) {
|
||||
*p = start + 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
str = (char*)YYCURSOR;
|
||||
|
||||
YYCURSOR += len;
|
||||
|
||||
if (*(YYCURSOR) != '"') {
|
||||
*p = YYCURSOR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
INIT_PZVAL(*rval);
|
||||
ZVAL_STRINGL(*rval, str, len, 1);
|
||||
return 1;
|
||||
}
|
||||
#line 934 "ext/standard/var_unserializer.c"
|
||||
yy61: yych = *++YYCURSOR;
|
||||
if(yych <= '/'){
|
||||
if(yych <= ','){
|
||||
if(yych == '+') goto yy57;
|
||||
goto yy18;
|
||||
if(yych == '+') goto yy65;
|
||||
goto yy19;
|
||||
} else {
|
||||
if(yych <= '-') goto yy55;
|
||||
if(yych <= '.') goto yy60;
|
||||
goto yy18;
|
||||
if(yych <= '-') goto yy63;
|
||||
if(yych <= '.') goto yy68;
|
||||
goto yy19;
|
||||
}
|
||||
} else {
|
||||
if(yych <= 'I'){
|
||||
if(yych <= '9') goto yy58;
|
||||
if(yych <= 'H') goto yy18;
|
||||
goto yy56;
|
||||
if(yych <= '9') goto yy66;
|
||||
if(yych <= 'H') goto yy19;
|
||||
goto yy64;
|
||||
} else {
|
||||
if(yych != 'N') goto yy18;
|
||||
goto yy54;
|
||||
if(yych != 'N') goto yy19;
|
||||
goto yy62;
|
||||
}
|
||||
}
|
||||
yy54: yych = *++YYCURSOR;
|
||||
if(yych == 'A') goto yy76;
|
||||
goto yy18;
|
||||
yy55: yych = *++YYCURSOR;
|
||||
yy62: yych = *++YYCURSOR;
|
||||
if(yych == 'A') goto yy84;
|
||||
goto yy19;
|
||||
yy63: yych = *++YYCURSOR;
|
||||
if(yych <= '/'){
|
||||
if(yych == '.') goto yy60;
|
||||
goto yy18;
|
||||
if(yych == '.') goto yy68;
|
||||
goto yy19;
|
||||
} else {
|
||||
if(yych <= '9') goto yy58;
|
||||
if(yych != 'I') goto yy18;
|
||||
goto yy56;
|
||||
if(yych <= '9') goto yy66;
|
||||
if(yych != 'I') goto yy19;
|
||||
goto yy64;
|
||||
}
|
||||
yy56: yych = *++YYCURSOR;
|
||||
if(yych == 'N') goto yy72;
|
||||
goto yy18;
|
||||
yy57: yych = *++YYCURSOR;
|
||||
if(yych == '.') goto yy60;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy58;
|
||||
yy58: ++YYCURSOR;
|
||||
yy64: yych = *++YYCURSOR;
|
||||
if(yych == 'N') goto yy80;
|
||||
goto yy19;
|
||||
yy65: yych = *++YYCURSOR;
|
||||
if(yych == '.') goto yy68;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy66;
|
||||
yy66: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
||||
yych = *YYCURSOR;
|
||||
goto yy59;
|
||||
yy59: if(yych <= ':'){
|
||||
goto yy67;
|
||||
yy67: if(yych <= ':'){
|
||||
if(yych <= '.'){
|
||||
if(yych <= '-') goto yy18;
|
||||
goto yy70;
|
||||
if(yych <= '-') goto yy19;
|
||||
goto yy78;
|
||||
} else {
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy58;
|
||||
goto yy18;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy66;
|
||||
goto yy19;
|
||||
}
|
||||
} else {
|
||||
if(yych <= 'E'){
|
||||
if(yych <= ';') goto yy63;
|
||||
if(yych <= 'D') goto yy18;
|
||||
goto yy65;
|
||||
if(yych <= ';') goto yy71;
|
||||
if(yych <= 'D') goto yy19;
|
||||
goto yy73;
|
||||
} else {
|
||||
if(yych == 'e') goto yy65;
|
||||
goto yy18;
|
||||
if(yych == 'e') goto yy73;
|
||||
goto yy19;
|
||||
}
|
||||
}
|
||||
yy60: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy61;
|
||||
yy61: ++YYCURSOR;
|
||||
yy68: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy69;
|
||||
yy69: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
||||
yych = *YYCURSOR;
|
||||
goto yy62;
|
||||
yy62: if(yych <= ';'){
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy61;
|
||||
if(yych <= ':') goto yy18;
|
||||
goto yy63;
|
||||
goto yy70;
|
||||
yy70: if(yych <= ';'){
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy69;
|
||||
if(yych <= ':') goto yy19;
|
||||
goto yy71;
|
||||
} else {
|
||||
if(yych <= 'E'){
|
||||
if(yych <= 'D') goto yy18;
|
||||
goto yy65;
|
||||
if(yych <= 'D') goto yy19;
|
||||
goto yy73;
|
||||
} else {
|
||||
if(yych == 'e') goto yy65;
|
||||
goto yy18;
|
||||
if(yych == 'e') goto yy73;
|
||||
goto yy19;
|
||||
}
|
||||
}
|
||||
yy63: ++YYCURSOR;
|
||||
goto yy64;
|
||||
yy64:
|
||||
yy71: ++YYCURSOR;
|
||||
goto yy72;
|
||||
yy72:
|
||||
#line 511 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
*p = YYCURSOR;
|
||||
@@ -969,66 +1026,66 @@ yy64:
|
||||
ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL));
|
||||
return 1;
|
||||
}
|
||||
#line 973 "ext/standard/var_unserializer.c"
|
||||
yy65: yych = *++YYCURSOR;
|
||||
#line 1030 "ext/standard/var_unserializer.c"
|
||||
yy73: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy18;
|
||||
goto yy66;
|
||||
if(yych != '+') goto yy19;
|
||||
goto yy74;
|
||||
} else {
|
||||
if(yych <= '-') goto yy66;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy67;
|
||||
goto yy18;
|
||||
if(yych <= '-') goto yy74;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy75;
|
||||
goto yy19;
|
||||
}
|
||||
yy66: yych = *++YYCURSOR;
|
||||
yy74: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych == '+') goto yy69;
|
||||
goto yy18;
|
||||
if(yych == '+') goto yy77;
|
||||
goto yy19;
|
||||
} else {
|
||||
if(yych <= '-') goto yy69;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy67;
|
||||
if(yych <= '-') goto yy77;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy75;
|
||||
}
|
||||
yy67: ++YYCURSOR;
|
||||
yy75: ++YYCURSOR;
|
||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
goto yy68;
|
||||
yy68: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy67;
|
||||
if(yych == ';') goto yy63;
|
||||
goto yy18;
|
||||
yy69: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy67;
|
||||
goto yy18;
|
||||
yy70: ++YYCURSOR;
|
||||
goto yy76;
|
||||
yy76: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy75;
|
||||
if(yych == ';') goto yy71;
|
||||
goto yy19;
|
||||
yy77: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy75;
|
||||
goto yy19;
|
||||
yy78: ++YYCURSOR;
|
||||
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
|
||||
yych = *YYCURSOR;
|
||||
goto yy71;
|
||||
yy71: if(yych <= ';'){
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy70;
|
||||
if(yych <= ':') goto yy18;
|
||||
goto yy63;
|
||||
goto yy79;
|
||||
yy79: if(yych <= ';'){
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy78;
|
||||
if(yych <= ':') goto yy19;
|
||||
goto yy71;
|
||||
} else {
|
||||
if(yych <= 'E'){
|
||||
if(yych <= 'D') goto yy18;
|
||||
goto yy65;
|
||||
if(yych <= 'D') goto yy19;
|
||||
goto yy73;
|
||||
} else {
|
||||
if(yych == 'e') goto yy65;
|
||||
goto yy18;
|
||||
if(yych == 'e') goto yy73;
|
||||
goto yy19;
|
||||
}
|
||||
}
|
||||
yy72: yych = *++YYCURSOR;
|
||||
if(yych != 'F') goto yy18;
|
||||
goto yy73;
|
||||
yy73: yych = *++YYCURSOR;
|
||||
if(yych != ';') goto yy18;
|
||||
goto yy74;
|
||||
yy74: ++YYCURSOR;
|
||||
goto yy75;
|
||||
yy75:
|
||||
yy80: yych = *++YYCURSOR;
|
||||
if(yych != 'F') goto yy19;
|
||||
goto yy81;
|
||||
yy81: yych = *++YYCURSOR;
|
||||
if(yych != ';') goto yy19;
|
||||
goto yy82;
|
||||
yy82: ++YYCURSOR;
|
||||
goto yy83;
|
||||
yy83:
|
||||
#line 496 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
*p = YYCURSOR;
|
||||
@@ -1044,35 +1101,35 @@ yy75:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1048 "ext/standard/var_unserializer.c"
|
||||
yy76: yych = *++YYCURSOR;
|
||||
if(yych == 'N') goto yy73;
|
||||
goto yy18;
|
||||
yy77: yych = *++YYCURSOR;
|
||||
#line 1105 "ext/standard/var_unserializer.c"
|
||||
yy84: yych = *++YYCURSOR;
|
||||
if(yych == 'N') goto yy81;
|
||||
goto yy19;
|
||||
yy85: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy18;
|
||||
goto yy78;
|
||||
if(yych != '+') goto yy19;
|
||||
goto yy86;
|
||||
} else {
|
||||
if(yych <= '-') goto yy78;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy79;
|
||||
goto yy18;
|
||||
if(yych <= '-') goto yy86;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy87;
|
||||
goto yy19;
|
||||
}
|
||||
yy78: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy79;
|
||||
yy79: ++YYCURSOR;
|
||||
yy86: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy87;
|
||||
yy87: ++YYCURSOR;
|
||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
goto yy80;
|
||||
yy80: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy79;
|
||||
if(yych != ';') goto yy18;
|
||||
goto yy81;
|
||||
yy81: ++YYCURSOR;
|
||||
goto yy82;
|
||||
yy82:
|
||||
goto yy88;
|
||||
yy88: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy87;
|
||||
if(yych != ';') goto yy19;
|
||||
goto yy89;
|
||||
yy89: ++YYCURSOR;
|
||||
goto yy90;
|
||||
yy90:
|
||||
#line 489 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
*p = YYCURSOR;
|
||||
@@ -1080,17 +1137,17 @@ yy82:
|
||||
ZVAL_LONG(*rval, parse_iv(start + 2));
|
||||
return 1;
|
||||
}
|
||||
#line 1084 "ext/standard/var_unserializer.c"
|
||||
yy83: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= '2') goto yy18;
|
||||
goto yy84;
|
||||
yy84: yych = *++YYCURSOR;
|
||||
if(yych != ';') goto yy18;
|
||||
goto yy85;
|
||||
yy85: ++YYCURSOR;
|
||||
goto yy86;
|
||||
yy86:
|
||||
#line 1141 "ext/standard/var_unserializer.c"
|
||||
yy91: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= '2') goto yy19;
|
||||
goto yy92;
|
||||
yy92: yych = *++YYCURSOR;
|
||||
if(yych != ';') goto yy19;
|
||||
goto yy93;
|
||||
yy93: ++YYCURSOR;
|
||||
goto yy94;
|
||||
yy94:
|
||||
#line 482 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
*p = YYCURSOR;
|
||||
@@ -1098,10 +1155,10 @@ yy86:
|
||||
ZVAL_BOOL(*rval, parse_iv(start + 2));
|
||||
return 1;
|
||||
}
|
||||
#line 1102 "ext/standard/var_unserializer.c"
|
||||
yy87: ++YYCURSOR;
|
||||
goto yy88;
|
||||
yy88:
|
||||
#line 1159 "ext/standard/var_unserializer.c"
|
||||
yy95: ++YYCURSOR;
|
||||
goto yy96;
|
||||
yy96:
|
||||
#line 475 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
*p = YYCURSOR;
|
||||
@@ -1109,32 +1166,32 @@ yy88:
|
||||
ZVAL_NULL(*rval);
|
||||
return 1;
|
||||
}
|
||||
#line 1113 "ext/standard/var_unserializer.c"
|
||||
yy89: yych = *++YYCURSOR;
|
||||
#line 1170 "ext/standard/var_unserializer.c"
|
||||
yy97: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy18;
|
||||
goto yy90;
|
||||
if(yych != '+') goto yy19;
|
||||
goto yy98;
|
||||
} else {
|
||||
if(yych <= '-') goto yy90;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy91;
|
||||
goto yy18;
|
||||
if(yych <= '-') goto yy98;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy99;
|
||||
goto yy19;
|
||||
}
|
||||
yy90: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy91;
|
||||
yy91: ++YYCURSOR;
|
||||
yy98: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy99;
|
||||
yy99: ++YYCURSOR;
|
||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
goto yy92;
|
||||
yy92: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy91;
|
||||
if(yych != ';') goto yy18;
|
||||
goto yy93;
|
||||
yy93: ++YYCURSOR;
|
||||
goto yy94;
|
||||
yy94:
|
||||
goto yy100;
|
||||
yy100: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy99;
|
||||
if(yych != ';') goto yy19;
|
||||
goto yy101;
|
||||
yy101: ++YYCURSOR;
|
||||
goto yy102;
|
||||
yy102:
|
||||
#line 452 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
long id;
|
||||
@@ -1158,32 +1215,32 @@ yy94:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1162 "ext/standard/var_unserializer.c"
|
||||
yy95: yych = *++YYCURSOR;
|
||||
#line 1219 "ext/standard/var_unserializer.c"
|
||||
yy103: yych = *++YYCURSOR;
|
||||
if(yych <= ','){
|
||||
if(yych != '+') goto yy18;
|
||||
goto yy96;
|
||||
if(yych != '+') goto yy19;
|
||||
goto yy104;
|
||||
} else {
|
||||
if(yych <= '-') goto yy96;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy97;
|
||||
goto yy18;
|
||||
if(yych <= '-') goto yy104;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy105;
|
||||
goto yy19;
|
||||
}
|
||||
yy96: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy18;
|
||||
if(yych >= ':') goto yy18;
|
||||
goto yy97;
|
||||
yy97: ++YYCURSOR;
|
||||
yy104: yych = *++YYCURSOR;
|
||||
if(yych <= '/') goto yy19;
|
||||
if(yych >= ':') goto yy19;
|
||||
goto yy105;
|
||||
yy105: ++YYCURSOR;
|
||||
if(YYLIMIT == YYCURSOR) YYFILL(1);
|
||||
yych = *YYCURSOR;
|
||||
goto yy98;
|
||||
yy98: if(yych <= '/') goto yy18;
|
||||
if(yych <= '9') goto yy97;
|
||||
if(yych != ';') goto yy18;
|
||||
goto yy99;
|
||||
yy99: ++YYCURSOR;
|
||||
goto yy100;
|
||||
yy100:
|
||||
goto yy106;
|
||||
yy106: if(yych <= '/') goto yy19;
|
||||
if(yych <= '9') goto yy105;
|
||||
if(yych != ';') goto yy19;
|
||||
goto yy107;
|
||||
yy107: ++YYCURSOR;
|
||||
goto yy108;
|
||||
yy108:
|
||||
#line 431 "ext/standard/var_unserializer.re"
|
||||
{
|
||||
long id;
|
||||
@@ -1205,10 +1262,10 @@ yy100:
|
||||
|
||||
return 1;
|
||||
}
|
||||
#line 1209 "ext/standard/var_unserializer.c"
|
||||
#line 1266 "ext/standard/var_unserializer.c"
|
||||
}
|
||||
}
|
||||
#line 727 "ext/standard/var_unserializer.re"
|
||||
#line 755 "ext/standard/var_unserializer.re"
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -526,6 +526,34 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER)
|
||||
return 0;
|
||||
}
|
||||
|
||||
str = (char*)YYCURSOR;
|
||||
|
||||
YYCURSOR += len;
|
||||
|
||||
if (*(YYCURSOR) != '"') {
|
||||
*p = YYCURSOR;
|
||||
return 0;
|
||||
}
|
||||
|
||||
YYCURSOR += 2;
|
||||
*p = YYCURSOR;
|
||||
|
||||
INIT_PZVAL(*rval);
|
||||
ZVAL_STRINGL(*rval, str, len, 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
"S:" uiv ":" ["] {
|
||||
size_t len, maxlen;
|
||||
char *str;
|
||||
|
||||
len = parse_uiv(start + 2);
|
||||
maxlen = max - YYCURSOR;
|
||||
if (maxlen < len) {
|
||||
*p = start + 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((str = unserialize_str(&YYCURSOR, len)) == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user