From: Dmitry Stogov Date: Wed, 5 Mar 2014 13:57:21 +0000 (+0400) Subject: Fixed hidden property handling X-Git-Tag: POST_PHPNG_MERGE~412^2~409^2~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5af715f2b10c41ad33bbf741b3082c638c0b260;p=php Fixed hidden property handling --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2a89da2a5e..70e4b60cb6 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1422,6 +1422,10 @@ ZEND_VM_HANDLER(85, ZEND_FETCH_OBJ_W, VAR|UNUSED|CV, CONST|TMP|VAR|CV) if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 6ec59ac6c7..48cb88ecfa 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -14760,6 +14760,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HA if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -17055,6 +17059,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HAND if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -19247,6 +19255,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HAND if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -22627,6 +22639,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -24339,6 +24355,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -25716,6 +25736,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_H if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -27009,6 +27033,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_H if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -28709,6 +28737,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HA if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -31823,6 +31855,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HAN if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -33900,6 +33936,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -35967,6 +36007,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDL if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) { @@ -39087,6 +39131,10 @@ static int ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLE if (Z_TYPE_P(retval_ptr) == IS_INDIRECT) { retval_ptr = Z_INDIRECT_P(retval_ptr); + if (retval_ptr == &EG(uninitialized_zval)) { + CHECK_EXCEPTION(); + ZEND_VM_NEXT_OPCODE(); + } } if (!Z_ISREF_P(retval_ptr)) { if (Z_REFCOUNTED_P(retval_ptr)) {