summaryrefslogtreecommitdiff
path: root/Zend/zend_API.c
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2008-03-06 17:28:47 +0000
committerAntony Dovgal <tony2001@php.net>2008-03-06 17:28:47 +0000
commitba9ad966c3895f2d7af2ec28a18d0034db1554eb (patch)
treea41464c3748fa99e8a3f932f33c1349901b6f7eb /Zend/zend_API.c
parent1af0116cf09e25805b6a5dc383bd345e6e55e66e (diff)
downloadphp-git-ba9ad966c3895f2d7af2ec28a18d0034db1554eb.tar.gz
MFH: fix segfault when trying to clone uncloneable object
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r--Zend/zend_API.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 5a4697175c..2be99be254 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -168,9 +168,15 @@ ZEND_API int _zend_get_parameters_array_ex(int param_count, zval ***argument_arr
*value_ptr = **value;
INIT_PZVAL(value_ptr);
zend_error(E_STRICT, "Implicit cloning object of class '%s' because of 'zend.ze1_compatibility_mode'", class_name);
+
+ if (Z_OBJ_HANDLER_PP(value, clone_obj) == NULL) {
+ zend_error(E_CORE_ERROR, "Trying to clone uncloneable object of class %s", class_name);
+ }
+
if(!dup) {
efree(class_name);
}
+
value_ptr->value.obj = Z_OBJ_HANDLER_PP(value, clone_obj)(*value TSRMLS_CC);
zval_ptr_dtor(value);
*value = value_ptr;