]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.5' into PHP-5.6
authorAnatol Belski <ab@php.net>
Wed, 10 Dec 2014 10:47:34 +0000 (11:47 +0100)
committerAnatol Belski <ab@php.net>
Wed, 10 Dec 2014 10:47:34 +0000 (11:47 +0100)
* PHP-5.5:
  Fixed bug #68545 NULL pointer dereference in unserialize.c

Conflicts:
ext/standard/var_unserializer.c

1  2 
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re

index 8b51a20acedf3dccaf38b9e605e32e2dbcf1cefb,f6f31bd3e7ad559694e366b48002f83195d36356..88ba7e5fb848f99de0cbd62cded13d2b7a989498
@@@ -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;
  
        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);
        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 */
  
        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;
        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;
        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:
        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);
  
        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;
        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;
        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;
  
        
        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;
  
        
        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;
Simple merge