From 34a598c2267c5fbf2ae1181bd5518f0266f33680 Mon Sep 17 00:00:00 2001 From: Daniel Scherzer Date: Tue, 3 Sep 2024 11:39:43 -0700 Subject: [PATCH] Fix GH-15731: Prevent `#[AllowDynamicProperties]` on enums --- 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 0000000000000..b9ab745be9ae7 --- /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 2471a6739e3c6..51c3eecd7b3c0 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -84,6 +84,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; }