From 157a4e289add1a3e346fa12c1235b7b22bcdf770 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Thu, 5 Feb 2004 02:16:08 +0000 Subject: [PATCH] Fixed bug #27145 (Unmangle private/protected property names before printing then inside error messages). --- Zend/tests/bug27145.phpt | 13 +++++++++++++ Zend/zend_compile.c | 10 ++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100755 Zend/tests/bug27145.phpt diff --git a/Zend/tests/bug27145.phpt b/Zend/tests/bug27145.phpt new file mode 100755 index 0000000000..f2f6dd6378 --- /dev/null +++ b/Zend/tests/bug27145.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #27145 (Errors messages print unmangled PPP property names) +--FILE-- + +--EXPECTF-- +Fatal error: Cannot redeclare property static protected a::$v in class b in %s on line %d \ No newline at end of file diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 25c5a34b4a..d18bf71f73 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1859,8 +1859,11 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro zval **new_prop; if (zend_hash_find(ce->static_members, child_info->name, child_info->name_length+1, (void**)&new_prop) == SUCCESS) { if (Z_TYPE_PP(new_prop) != IS_NULL && Z_TYPE_PP(prop) != IS_NULL) { + char *prop_name, *tmp; + zend_unmangle_property_name(child_info->name, &tmp, &prop_name); + zend_error(E_COMPILE_ERROR, "Cannot change initial value of property static protected %s::$%s in class %s", - parent_ce->name, child_info->name, ce->name); + parent_ce->name, prop_name, ce->name); } } (*prop)->refcount++; @@ -1872,8 +1875,11 @@ static zend_bool do_inherit_property_access_check(HashTable *target_ht, zend_pro } pefree(prot_name, ce->type & ZEND_INTERNAL_CLASS); } else if (!(child_info->flags & ZEND_ACC_PRIVATE) && (child_info->flags & ZEND_ACC_STATIC)) { + char *prop_name, *tmp; + + zend_unmangle_property_name(child_info->name, &tmp, &prop_name); zend_error(E_COMPILE_ERROR, "Cannot redeclare property static %s %s::$%s in class %s", - zend_visibility_string(child_info->flags), parent_ce->name, child_info->name, ce->name); + zend_visibility_string(child_info->flags), parent_ce->name, prop_name, ce->name); } return 0; /* Don't copy from parent */ } else { -- 2.40.0