From de03dd63872d5e24a06691a8fafb5fa39054d81c Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Sun, 9 Oct 2005 14:42:08 +0000 Subject: [PATCH] - MFH Fix potential SEGV with overloaded objects --- ext/spl/spl_array.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index 822e5bd04d..d3d870d7d3 100755 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -825,6 +825,15 @@ SPL_METHOD(Array, __construct) } intern->ar_flags |= ar_flags; ZVAL_ADDREF(intern->array); + if (Z_TYPE_P(array) == IS_OBJECT) { + zend_object_get_properties_t handler = Z_OBJ_HANDLER_P(array, get_properties); + if ((handler != std_object_handlers.get_properties && handler != spl_array_get_properties) + || !spl_array_get_hash_table(intern, 0 TSRMLS_CC)) { + php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC); + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Overloaded object of type %s is not compatible with %s", Z_OBJCE_P(array)->name, intern->std.ce->name); + return; + } + } spl_array_rewind(intern TSRMLS_CC); -- 2.50.1