]> granicus.if.org Git - php/commitdiff
Raise error in case dereference is performed on a scalar value.
authorMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 4 Dec 2003 13:38:30 +0000 (13:38 +0000)
committerMoriyoshi Koizumi <moriyoshi@php.net>
Thu, 4 Dec 2003 13:38:30 +0000 (13:38 +0000)
Zend/zend_execute.c

index 39387b9fcda8eb42223b9211068b1e636d3402c8..2799b2a5bb5ceb50ac2d74d6aa02008b60cd70b5 100644 (file)
@@ -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);