diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-19 16:35:12 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-19 16:35:12 +0200 |
commit | 268b5fec8e42e82dce398b86a4970ad8875978d3 (patch) | |
tree | b7ed8a105a5570e170a56d78d5aad1fb251bba55 /Zend | |
parent | b8cba88904a509abd2c141ebcdb952cfd9471063 (diff) | |
download | php-git-268b5fec8e42e82dce398b86a4970ad8875978d3.tar.gz |
Fixed bug #78182
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/tests/bug78182.phpt | 15 | ||||
-rw-r--r-- | Zend/zend_execute.c | 1 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Zend/tests/bug78182.phpt b/Zend/tests/bug78182.phpt new file mode 100644 index 0000000000..4b0f08dc3b --- /dev/null +++ b/Zend/tests/bug78182.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #78182: Segmentation fault during by-reference property assignment +--FILE-- +<?php +$varName = 'var'; +$propName = 'prop'; +$$varName->$propName =& $$varName; +var_dump($var); +?> +--EXPECTF-- +Warning: Creating default object from empty value in %s on line %d +object(stdClass)#1 (1) { + ["prop"]=> + *RECURSION* +} diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index faa677e44d..5588ada56a 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -2826,6 +2826,7 @@ static zend_always_inline void zend_assign_to_property_reference(zval *container if (prop_op_type == IS_CONST) { prop_info = (zend_property_info *) CACHED_PTR_EX(cache_addr + 2); } else { + ZVAL_DEREF(container); prop_info = zend_object_fetch_property_type_info(Z_OBJ_P(container), variable_ptr); } |