From f2e88512451ba0d48252eaf206a0f242a8cd3ddb Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 1 Oct 2019 12:58:26 +0200 Subject: Remove func copy optimization for private method with static vars Not NULLing the static_variables pointer for shadow methods during static var shutdown would be a way to avoid this leak, but unless there's evidence that inherited private methods with static vars are actually a common use-case, I don't think we should keep this kind of fragile edge-case optimization. Fixes OSS-Fuzz #17875. --- Zend/zend_inheritance.c | 9 --------- 1 file changed, 9 deletions(-) (limited to 'Zend/zend_inheritance.c') diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index 30899982c8..4288d8fb59 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -101,15 +101,6 @@ static zend_always_inline zend_function *zend_duplicate_function(zend_function * /* reuse the same op_array structure */ return func; } - if (func->op_array.fn_flags & ZEND_ACC_PRIVATE) { - /* For private methods we reuse the same op_array structure even if - * static variables are used, because it will not end up being used - * anyway. However we still need to addref as the dtor will delref. */ - if (!(GC_FLAGS(func->op_array.static_variables) & IS_ARRAY_IMMUTABLE)) { - GC_ADDREF(func->op_array.static_variables); - } - return func; - } return zend_duplicate_user_function(func); } } -- cgit v1.2.1