diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-01-10 10:58:07 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-01-10 10:58:07 +0100 |
commit | cf3317c790f968687f70ee5f738da1358ddf875b (patch) | |
tree | 1fa878dbb75debc957a4d3dd2c8f3225eda9dcaa | |
parent | 61b0122698c205a4e6e6f90c7315e454ea8fe2bd (diff) | |
parent | 00e5d0e8599e60e16bab999b5b8eedd9192c1bad (diff) | |
download | php-git-cf3317c790f968687f70ee5f738da1358ddf875b.tar.gz |
Merge branch 'PHP-7.3'
-rw-r--r-- | ext/standard/tests/strings/bug77439.phpt | 14 | ||||
-rw-r--r-- | main/php_variables.c | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/ext/standard/tests/strings/bug77439.phpt b/ext/standard/tests/strings/bug77439.phpt new file mode 100644 index 0000000000..ee8a3d2845 --- /dev/null +++ b/ext/standard/tests/strings/bug77439.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #77439: parse_str segfaults when inserting item into existing array +--FILE-- +<?php +$a = []; +parse_str('a[1]=1'); +var_dump($a); +?> +--EXPECTF-- +Deprecated: parse_str(): Calling parse_str() without the result argument is deprecated in %s on line %d +array(1) { + [1]=> + string(1) "1" +} diff --git a/main/php_variables.c b/main/php_variables.c index ca8d8b7334..5ac61a4fa0 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -224,6 +224,8 @@ PHPAPI void php_register_variable_ex(char *var_name, zval *val, zval *track_vars if (Z_TYPE_P(gpc_element_p) != IS_ARRAY) { zval_ptr_dtor_nogc(gpc_element_p); array_init(gpc_element_p); + } else { + SEPARATE_ARRAY(gpc_element_p); } } } |