summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-02 10:16:35 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-09-02 10:16:35 +0200
commit605ee9c8eb614729be717d3244cfa3da9705ba64 (patch)
tree4fe7fd053925188144afb2e3cb37b2400728e087
parentf92a03627a51a3e440b73795fb2a34a888f23b8d (diff)
parenta07c1f56aac1c0f6c8334760009b678cbf9d6138 (diff)
downloadphp-git-605ee9c8eb614729be717d3244cfa3da9705ba64.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix infinite loop on string offset during by-ref list assign
-rw-r--r--Zend/tests/list_assign_ref_string_offset_error.phpt16
-rw-r--r--Zend/zend_execute.c1
2 files changed, 17 insertions, 0 deletions
diff --git a/Zend/tests/list_assign_ref_string_offset_error.phpt b/Zend/tests/list_assign_ref_string_offset_error.phpt
new file mode 100644
index 0000000000..c4e99d01a2
--- /dev/null
+++ b/Zend/tests/list_assign_ref_string_offset_error.phpt
@@ -0,0 +1,16 @@
+--TEST--
+String offset error during list() by-ref assignment
+--FILE--
+<?php
+
+$a = [0];
+$v = 'b';
+$i = 0;
+list(&$a[$i++]) = $v;
+
+?>
+--EXPECTF--
+Fatal error: Uncaught Error: Cannot create references to/from string offsets in %s:%d
+Stack trace:
+#0 {main}
+ thrown in %s on line %d
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 6a6ad61094..b6839bb88b 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1512,6 +1512,7 @@ static zend_never_inline ZEND_COLD void zend_wrong_string_offset(EXECUTE_DATA_D)
msg = "Cannot create references to/from string offsets";
break;
}
+ opline++;
}
break;
EMPTY_SWITCH_DEFAULT_CASE();