diff --git a/Zend/tests/lazy_objects/oss_fuzz_71382.phpt b/Zend/tests/lazy_objects/oss_fuzz_71382.phpt new file mode 100644 index 000000000000..2f63b05902b0 --- /dev/null +++ b/Zend/tests/lazy_objects/oss_fuzz_71382.phpt @@ -0,0 +1,27 @@ +--TEST-- +oss-fuzz #71382 +--FILE-- +newLazyGhost(function() { + throw new \Exception('initializer'); +}); + +try { + foreach($obj as $a) { + } +} catch (Exception $e) { + printf("%s: %s\n", $e::class, $e->getMessage()); +} + +--EXPECT-- +Exception: initializer diff --git a/Zend/zend_property_hooks.c b/Zend/zend_property_hooks.c index 9cfa15ecafa4..523584de943d 100644 --- a/Zend/zend_property_hooks.c +++ b/Zend/zend_property_hooks.c @@ -54,7 +54,7 @@ static zend_array *zho_build_properties_ex(zend_object *zobj, bool check_access, if (UNEXPECTED(zend_lazy_object_must_init(zobj))) { zobj = zend_lazy_object_init(zobj); if (UNEXPECTED(!zobj)) { - return (zend_array*) &zend_empty_array; + return zend_new_array(0); } }