summaryrefslogtreecommitdiff
path: root/ext/standard/basic_functions.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2016-11-18 16:19:00 +0300
committerDmitry Stogov <dmitry@zend.com>2016-11-18 16:19:00 +0300
commit628cde2fae6f0daad815d9140421275845a8b91a (patch)
treebcf4eee9d9306a9fd90f5bc5b9dc7a47d7a2b98e /ext/standard/basic_functions.c
parent628533caa08e8ff2916fdabddc2a55243e7ab261 (diff)
parentd769a020dfea2d9a59beff5c27ae4bbd243819f3 (diff)
downloadphp-git-628cde2fae6f0daad815d9140421275845a8b91a.tar.gz
Merge branch 'PHP-7.1'
* PHP-7.1: Fixed memory leaks in parse_ini_file()
Diffstat (limited to 'ext/standard/basic_functions.c')
-rw-r--r--ext/standard/basic_functions.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c
index dde29fbb69..9001d6dac3 100644
--- a/ext/standard/basic_functions.c
+++ b/ext/standard/basic_functions.c
@@ -5844,8 +5844,6 @@ PHP_FUNCTION(move_uploaded_file)
*/
static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int callback_type, zval *arr)
{
- zval element;
-
switch (callback_type) {
case ZEND_INI_PARSER_ENTRY:
@@ -5853,8 +5851,8 @@ static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int cal
/* bare string - nothing to do */
break;
}
- ZVAL_DUP(&element, arg2);
- zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), &element);
+ Z_TRY_ADDREF_P(arg2);
+ zend_symtable_update(Z_ARRVAL_P(arr), Z_STR_P(arg1), arg2);
break;
case ZEND_INI_PARSER_POP_ENTRY:
@@ -5884,12 +5882,11 @@ static void php_simple_ini_parser_cb(zval *arg1, zval *arg2, zval *arg3, int cal
array_init(find_hash);
}
- ZVAL_DUP(&element, arg2);
if (!arg3 || (Z_TYPE_P(arg3) == IS_STRING && Z_STRLEN_P(arg3) == 0)) {
- add_next_index_zval(find_hash, &element);
+ Z_TRY_ADDREF_P(arg2);
+ add_next_index_zval(find_hash, arg2);
} else {
- array_set_zval_key(Z_ARRVAL_P(find_hash), arg3, &element);
- zval_ptr_dtor(&element);
+ array_set_zval_key(Z_ARRVAL_P(find_hash), arg3, arg2);
}
}
break;