From 5a18279b5d79ae72201f74589b0774643f934ee2 Mon Sep 17 00:00:00 2001 From: DanielEScherzer Date: Wed, 4 Sep 2024 15:56:18 -0700 Subject: [PATCH] Fix GH-15731: Prevent `#[AllowDynamicProperties]` on enums (#15733) --- Zend/tests/allow_dynamic_properties_on_enum.phpt | 11 +++++++++++ Zend/zend_attributes.c | 5 +++++ 2 files changed, 16 insertions(+) create mode 100644 Zend/tests/allow_dynamic_properties_on_enum.phpt diff --git a/Zend/tests/allow_dynamic_properties_on_enum.phpt b/Zend/tests/allow_dynamic_properties_on_enum.phpt new file mode 100644 index 00000000000..b9ab745be9a --- /dev/null +++ b/Zend/tests/allow_dynamic_properties_on_enum.phpt @@ -0,0 +1,11 @@ +--TEST-- +#[AllowDynamicProperties] cannot be applied to enum (GH-15731) +--FILE-- + +--EXPECTF-- +Fatal error: Cannot apply #[AllowDynamicProperties] to enum Test in %s on line %d diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index 5ae2d9a8d5f..d7bcb1f54e8 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -86,6 +86,11 @@ static void validate_allow_dynamic_properties( ZSTR_VAL(scope->name) ); } + if (scope->ce_flags & ZEND_ACC_ENUM) { + zend_error_noreturn(E_ERROR, "Cannot apply #[AllowDynamicProperties] to enum %s", + ZSTR_VAL(scope->name) + ); + } scope->ce_flags |= ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES; }