diff --git a/Zend/tests/bug77494.phpt b/Zend/tests/bug77494.phpt index adab05bef74..dc70076b1a4 100644 --- a/Zend/tests/bug77494.phpt +++ b/Zend/tests/bug77494.phpt @@ -3,14 +3,21 @@ Bug #77494 (Disabling class causes segfault on member access) --SKIPIF-- --INI-- -disable_classes=CURLFile +disable_classes=CURLFile,ErrorException --FILE-- name); +$b = new ErrorException(); +var_dump($b->message); ?> --EXPECTF-- Warning: CURLFile() has been disabled for security reasons in %sbug77494.php on line 2 Warning: Undefined property: CURLFile::$name in %s on line %d NULL + +Warning: ErrorException() has been disabled for security reasons in %s on line %d + +Warning: Undefined property: ErrorException::$message in %s on line %d +NULL diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 62bd8b4bed2..e3cd2dd6392 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -3240,6 +3240,9 @@ ZEND_API zend_result zend_disable_class(const char *class_name, size_t class_nam return FAILURE; } + /* Will be reset by INIT_CLASS_ENTRY. */ + free(disabled_class->interfaces); + INIT_CLASS_ENTRY_INIT_METHODS((*disabled_class), disabled_class_new); disabled_class->create_object = display_disabled_class; @@ -3250,6 +3253,7 @@ ZEND_API zend_result zend_disable_class(const char *class_name, size_t class_nam } } ZEND_HASH_FOREACH_END(); zend_hash_clean(&disabled_class->function_table); + zend_hash_clean(&disabled_class->properties_info); return SUCCESS; } /* }}} */