From: Anatol Belski Date: Wed, 10 Dec 2014 10:47:34 +0000 (+0100) Subject: Merge branch 'PHP-5.5' into PHP-5.6 X-Git-Tag: PRE_NATIVE_TLS_MERGE~17^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4a82cdce6633ec8d7bb5ffdbe726e14e9d70e512;p=php Merge branch 'PHP-5.5' into PHP-5.6 * PHP-5.5: Fixed bug #68545 NULL pointer dereference in unserialize.c Conflicts: ext/standard/var_unserializer.c --- 4a82cdce6633ec8d7bb5ffdbe726e14e9d70e512 diff --cc ext/standard/var_unserializer.c index 8b51a20ace,f6f31bd3e7..88ba7e5fb8 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@@ -226,7 -233,7 +232,7 @@@ static char *unserialize_str(const unsi #define YYMARKER marker - #line 234 "ext/standard/var_unserializer.re" -#line 241 "ext/standard/var_unserializer.re" ++#line 240 "ext/standard/var_unserializer.re" @@@ -469,7 -480,7 +475,7 @@@ PHPAPI int php_var_unserialize(UNSERIAL - #line 473 "ext/standard/var_unserializer.c" -#line 484 "ext/standard/var_unserializer.c" ++#line 479 "ext/standard/var_unserializer.c" { YYCTYPE yych; static const unsigned char yybm[] = { @@@ -529,9 -540,9 +535,9 @@@ yy2 yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy95; yy3: - #line 824 "ext/standard/var_unserializer.re" -#line 835 "ext/standard/var_unserializer.re" ++#line 830 "ext/standard/var_unserializer.re" { return 0; } - #line 535 "ext/standard/var_unserializer.c" -#line 546 "ext/standard/var_unserializer.c" ++#line 541 "ext/standard/var_unserializer.c" yy4: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy89; @@@ -574,13 -585,13 +580,13 @@@ yy13 goto yy3; yy14: ++YYCURSOR; - #line 818 "ext/standard/var_unserializer.re" -#line 829 "ext/standard/var_unserializer.re" ++#line 824 "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 584 "ext/standard/var_unserializer.c" -#line 595 "ext/standard/var_unserializer.c" ++#line 590 "ext/standard/var_unserializer.c" yy16: yych = *++YYCURSOR; goto yy3; @@@ -610,7 -621,7 +616,7 @@@ yy20 yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; - #line 672 "ext/standard/var_unserializer.re" -#line 683 "ext/standard/var_unserializer.re" ++#line 678 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; long elements; @@@ -756,7 -767,7 +762,7 @@@ return object_common2(UNSERIALIZE_PASSTHRU, elements); } - #line 760 "ext/standard/var_unserializer.c" -#line 771 "ext/standard/var_unserializer.c" ++#line 766 "ext/standard/var_unserializer.c" yy25: yych = *++YYCURSOR; if (yych <= ',') { @@@ -781,7 -792,7 +787,7 @@@ yy27 yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; - #line 664 "ext/standard/var_unserializer.re" -#line 675 "ext/standard/var_unserializer.re" ++#line 670 "ext/standard/var_unserializer.re" { INIT_PZVAL(*rval); @@@ -789,7 -800,7 +795,7 @@@ return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } - #line 793 "ext/standard/var_unserializer.c" -#line 804 "ext/standard/var_unserializer.c" ++#line 799 "ext/standard/var_unserializer.c" yy32: yych = *++YYCURSOR; if (yych == '+') goto yy33; @@@ -810,7 -821,7 +816,7 @@@ yy34 yych = *++YYCURSOR; if (yych != '{') goto yy18; ++YYCURSOR; - #line 644 "ext/standard/var_unserializer.re" -#line 655 "ext/standard/var_unserializer.re" ++#line 650 "ext/standard/var_unserializer.re" { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ @@@ -830,7 -841,7 +836,7 @@@ return finish_nested_data(UNSERIALIZE_PASSTHRU); } - #line 834 "ext/standard/var_unserializer.c" -#line 845 "ext/standard/var_unserializer.c" ++#line 840 "ext/standard/var_unserializer.c" yy39: yych = *++YYCURSOR; if (yych == '+') goto yy40; @@@ -851,7 -862,7 +857,7 @@@ yy41 yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; - #line 615 "ext/standard/var_unserializer.re" -#line 626 "ext/standard/var_unserializer.re" ++#line 621 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@@ -880,7 -891,7 +886,7 @@@ ZVAL_STRINGL(*rval, str, len, 0); return 1; } - #line 884 "ext/standard/var_unserializer.c" -#line 895 "ext/standard/var_unserializer.c" ++#line 890 "ext/standard/var_unserializer.c" yy46: yych = *++YYCURSOR; if (yych == '+') goto yy47; @@@ -901,7 -912,7 +907,7 @@@ yy48 yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; - #line 587 "ext/standard/var_unserializer.re" -#line 598 "ext/standard/var_unserializer.re" ++#line 593 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@@ -929,7 -940,7 +935,7 @@@ ZVAL_STRINGL(*rval, str, len, 1); return 1; } - #line 933 "ext/standard/var_unserializer.c" -#line 944 "ext/standard/var_unserializer.c" ++#line 939 "ext/standard/var_unserializer.c" yy53: yych = *++YYCURSOR; if (yych <= '/') { @@@ -1017,7 -1028,7 +1023,7 @@@ yy61 } yy63: ++YYCURSOR; - #line 577 "ext/standard/var_unserializer.re" -#line 588 "ext/standard/var_unserializer.re" ++#line 583 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 use_double: @@@ -1027,7 -1038,7 +1033,7 @@@ ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); return 1; } - #line 1031 "ext/standard/var_unserializer.c" -#line 1042 "ext/standard/var_unserializer.c" ++#line 1037 "ext/standard/var_unserializer.c" yy65: yych = *++YYCURSOR; if (yych <= ',') { @@@ -1086,7 -1097,7 +1092,7 @@@ yy73 yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; - #line 562 "ext/standard/var_unserializer.re" -#line 573 "ext/standard/var_unserializer.re" ++#line 568 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); @@@ -1101,7 -1112,7 +1107,7 @@@ return 1; } - #line 1105 "ext/standard/var_unserializer.c" -#line 1116 "ext/standard/var_unserializer.c" ++#line 1111 "ext/standard/var_unserializer.c" yy76: yych = *++YYCURSOR; if (yych == 'N') goto yy73; @@@ -1128,7 -1139,7 +1134,7 @@@ yy79 if (yych <= '9') goto yy79; if (yych != ';') goto yy18; ++YYCURSOR; - #line 535 "ext/standard/var_unserializer.re" -#line 546 "ext/standard/var_unserializer.re" ++#line 541 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 int digits = YYCURSOR - start - 3; @@@ -1155,7 -1166,7 +1161,7 @@@ ZVAL_LONG(*rval, parse_iv(start + 2)); return 1; } - #line 1159 "ext/standard/var_unserializer.c" -#line 1170 "ext/standard/var_unserializer.c" ++#line 1165 "ext/standard/var_unserializer.c" yy83: yych = *++YYCURSOR; if (yych <= '/') goto yy18; @@@ -1163,24 -1174,24 +1169,24 @@@ yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; - #line 528 "ext/standard/var_unserializer.re" -#line 539 "ext/standard/var_unserializer.re" ++#line 534 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_BOOL(*rval, parse_iv(start + 2)); return 1; } - #line 1174 "ext/standard/var_unserializer.c" -#line 1185 "ext/standard/var_unserializer.c" ++#line 1180 "ext/standard/var_unserializer.c" yy87: ++YYCURSOR; - #line 521 "ext/standard/var_unserializer.re" -#line 532 "ext/standard/var_unserializer.re" ++#line 527 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_NULL(*rval); return 1; } - #line 1184 "ext/standard/var_unserializer.c" -#line 1195 "ext/standard/var_unserializer.c" ++#line 1190 "ext/standard/var_unserializer.c" yy89: yych = *++YYCURSOR; if (yych <= ',') { @@@ -1203,7 -1214,7 +1209,7 @@@ yy91 if (yych <= '9') goto yy91; if (yych != ';') goto yy18; ++YYCURSOR; - #line 498 "ext/standard/var_unserializer.re" -#line 509 "ext/standard/var_unserializer.re" ++#line 504 "ext/standard/var_unserializer.re" { long id; @@@ -1226,7 -1237,7 +1232,7 @@@ return 1; } - #line 1230 "ext/standard/var_unserializer.c" -#line 1241 "ext/standard/var_unserializer.c" ++#line 1236 "ext/standard/var_unserializer.c" yy95: yych = *++YYCURSOR; if (yych <= ',') { @@@ -1249,7 -1260,7 +1255,7 @@@ yy97 if (yych <= '9') goto yy97; if (yych != ';') goto yy18; ++YYCURSOR; - #line 477 "ext/standard/var_unserializer.re" -#line 488 "ext/standard/var_unserializer.re" ++#line 483 "ext/standard/var_unserializer.re" { long id; @@@ -1270,9 -1281,9 +1276,9 @@@ return 1; } - #line 1274 "ext/standard/var_unserializer.c" -#line 1285 "ext/standard/var_unserializer.c" ++#line 1280 "ext/standard/var_unserializer.c" } - #line 826 "ext/standard/var_unserializer.re" -#line 837 "ext/standard/var_unserializer.re" ++#line 832 "ext/standard/var_unserializer.re" return 0;