summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMoriyoshi Koizumi <moriyoshi@php.net>2003-12-04 13:38:30 +0000
committerMoriyoshi Koizumi <moriyoshi@php.net>2003-12-04 13:38:30 +0000
commitbcbc036ac1989e646a3281b7a5843eb21ac8b42c (patch)
treef1e25c39a373c586f5918549b27bd35aad25e727
parentc09003a91079619e51574df129cd8000fc3d58a9 (diff)
downloadphp-git-bcbc036ac1989e646a3281b7a5843eb21ac8b42c.tar.gz
Raise error in case dereference is performed on a scalar value.
-rw-r--r--Zend/zend_execute.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index 39387b9fcd..2799b2a5bb 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -1949,6 +1949,10 @@ int zend_fetch_dim_unset_handler(ZEND_OPCODE_HANDLER_ARGS)
if (EX_T(EX(opline)->result.u.var).EA.type == IS_STRING_OFFSET) {
zend_error(E_ERROR, "Cannot unset string offsets");
} else {
+ if (Z_TYPE_PP(EX_T(EX(opline)->result.u.var).var.ptr_ptr) != IS_ARRAY) {
+ zend_error(E_ERROR, "Illegal scalar dereference");
+ }
+
PZVAL_UNLOCK(*EX_T(EX(opline)->result.u.var).var.ptr_ptr);
if (EX_T(EX(opline)->result.u.var).var.ptr_ptr != &EG(uninitialized_zval_ptr)) {
SEPARATE_ZVAL_IF_NOT_REF(EX_T(EX(opline)->result.u.var).var.ptr_ptr);