From 6fc358241b84866e8f688055d577ba2fcaf2bbd3 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 6 Aug 2015 18:04:17 +0300 Subject: [PATCH 1/2] Use specialized efree_size() --- ext/standard/var_unserializer.c | 33 ++++++++++++++++---------------- ext/standard/var_unserializer.re | 4 ++-- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 1dc4e69f18bb..ea1c971081eb 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.13.7.5 */ +/* Generated by re2c 0.13.5 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ @@ -177,7 +177,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) while (var_hash) { next = var_hash->next; - efree(var_hash); + efree_size(var_hash, sizeof(var_entries)); var_hash = next; } @@ -186,7 +186,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) zval_ptr_dtor(&var_dtor_hash->data[i]); } next = var_dtor_hash->next; - efree(var_dtor_hash); + efree_size(var_dtor_hash, sizeof(var_dtor_entries)); var_dtor_hash = next; } } @@ -665,8 +665,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) if (yybm[0+yych] & 128) { goto yy20; } - if (yych <= '/') goto yy18; - if (yych >= ';') goto yy18; + if (yych != ':') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; @@ -815,7 +814,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return object_common2(UNSERIALIZE_PASSTHRU, elements); } -#line 819 "ext/standard/var_unserializer.c" +#line 818 "ext/standard/var_unserializer.c" yy25: yych = *++YYCURSOR; if (yych <= ',') { @@ -848,7 +847,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } -#line 852 "ext/standard/var_unserializer.c" +#line 851 "ext/standard/var_unserializer.c" yy32: yych = *++YYCURSOR; if (yych == '+') goto yy33; @@ -890,7 +889,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return finish_nested_data(UNSERIALIZE_PASSTHRU); } -#line 894 "ext/standard/var_unserializer.c" +#line 893 "ext/standard/var_unserializer.c" yy39: yych = *++YYCURSOR; if (yych == '+') goto yy40; @@ -939,7 +938,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_STR(rval, str); return 1; } -#line 943 "ext/standard/var_unserializer.c" +#line 942 "ext/standard/var_unserializer.c" yy46: yych = *++YYCURSOR; if (yych == '+') goto yy47; @@ -987,7 +986,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_STRINGL(rval, str, len); return 1; } -#line 991 "ext/standard/var_unserializer.c" +#line 990 "ext/standard/var_unserializer.c" yy53: yych = *++YYCURSOR; if (yych <= '/') { @@ -1084,7 +1083,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); return 1; } -#line 1088 "ext/standard/var_unserializer.c" +#line 1087 "ext/standard/var_unserializer.c" yy65: yych = *++YYCURSOR; if (yych <= ',') { @@ -1159,7 +1158,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return 1; } -#line 1163 "ext/standard/var_unserializer.c" +#line 1162 "ext/standard/var_unserializer.c" yy76: yych = *++YYCURSOR; if (yych == 'N') goto yy73; @@ -1212,7 +1211,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_LONG(rval, parse_iv(start + 2)); return 1; } -#line 1216 "ext/standard/var_unserializer.c" +#line 1215 "ext/standard/var_unserializer.c" yy83: yych = *++YYCURSOR; if (yych <= '/') goto yy18; @@ -1226,7 +1225,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_BOOL(rval, parse_iv(start + 2)); return 1; } -#line 1230 "ext/standard/var_unserializer.c" +#line 1229 "ext/standard/var_unserializer.c" yy87: ++YYCURSOR; #line 581 "ext/standard/var_unserializer.re" @@ -1235,7 +1234,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) ZVAL_NULL(rval); return 1; } -#line 1239 "ext/standard/var_unserializer.c" +#line 1238 "ext/standard/var_unserializer.c" yy89: yych = *++YYCURSOR; if (yych <= ',') { @@ -1281,7 +1280,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return 1; } -#line 1285 "ext/standard/var_unserializer.c" +#line 1284 "ext/standard/var_unserializer.c" yy95: yych = *++YYCURSOR; if (yych <= ',') { @@ -1326,7 +1325,7 @@ PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) return 1; } -#line 1330 "ext/standard/var_unserializer.c" +#line 1329 "ext/standard/var_unserializer.c" } #line 881 "ext/standard/var_unserializer.re" diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 23ea6548e5cf..7d4ca2c803d4 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -175,7 +175,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) while (var_hash) { next = var_hash->next; - efree(var_hash); + efree_size(var_hash, sizeof(var_entries)); var_hash = next; } @@ -184,7 +184,7 @@ PHPAPI void var_destroy(php_unserialize_data_t *var_hashx) zval_ptr_dtor(&var_dtor_hash->data[i]); } next = var_dtor_hash->next; - efree(var_dtor_hash); + efree_size(var_dtor_hash, sizeof(var_dtor_entries)); var_dtor_hash = next; } } From 3f242f1f896e5018b3051b6afc1e9a5e43f92053 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Thu, 6 Aug 2015 19:04:51 +0200 Subject: [PATCH 2/2] fixed mixed up NEWS entries --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index edebe165da7a..afd6293be658 100644 --- a/NEWS +++ b/NEWS @@ -71,8 +71,8 @@ PHP NEWS - Standard: . Fixed bug #70140 (str_ireplace/php_string_tolower - Arbitrary Code - . Implemented #70112 (Allow "dirname" to go up various times). (Remi) Execution). (Laruence) + . Implemented #70112 (Allow "dirname" to go up various times). (Remi) . Fixed bug #36365 (scandir duplicates file name at every 65535th file). (cmb) 23 Jul 2015, PHP 7.0.0 Beta 2