From 683285165e94bbe8ed387e3850b0b776b804f948 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 19 Dec 2022 12:11:16 +0300 Subject: [PATCH] Fix memory leak Fixes oss-fuzz #54320 --- Zend/tests/class_constants_007.phpt | 13 +++++++++++++ Zend/zend_inheritance.c | 1 + 2 files changed, 14 insertions(+) create mode 100644 Zend/tests/class_constants_007.phpt diff --git a/Zend/tests/class_constants_007.phpt b/Zend/tests/class_constants_007.phpt new file mode 100644 index 00000000000..d09a12e8c17 --- /dev/null +++ b/Zend/tests/class_constants_007.phpt @@ -0,0 +1,13 @@ +--TEST-- +Ownership of constant expression inhereted from immutable class should be transfered to class +--FILE-- + +--EXPECT-- +string(2) " " diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index acff1da1798..e91195bb15a 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -1354,6 +1354,7 @@ static void do_inherit_class_constant(zend_string *name, zend_class_constant *pa c = zend_arena_alloc(&CG(arena), sizeof(zend_class_constant)); memcpy(c, parent_const, sizeof(zend_class_constant)); parent_const = c; + Z_CONSTANT_FLAGS(c->value) |= CONST_OWNED; } } if (ce->type & ZEND_INTERNAL_CLASS) {