From ef7166481700b670156f9ea80b84a53200ebc698 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 8 Aug 2007 13:32:46 +0000 Subject: [PATCH] Fixed bug #42211 (property_exists() fails to find protected properties from a parent class) --- NEWS | 2 ++ Zend/tests/bug42211.phpt | 30 ++++++++++++++++++++++++++++++ Zend/zend_builtin_functions.c | 3 ++- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug42211.phpt diff --git a/NEWS b/NEWS index 38ed700c8a..1f974e1dc8 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,8 @@ PHP NEWS streams). (andrew dot minerd at sellingsource dot com, Ilia) - Fixed bug #42233 (Problems with æøå in extract()). (Jani) - Fixed bug #42222 (possible buffer overflow in php_openssl_make_REQ). (Pierre) +- Fixed bug #42211 (property_exists() fails to find protected properties from + a parent class). (Dmitry) - Fixed bug #42208 (substr_replace() crashes when the same array is passed more than once). (crrodriguez at suse dot de, Ilia) - Fixed bug #42198 (SCRIPT_NAME and PHP_SELF truncated when inside a userdir diff --git a/Zend/tests/bug42211.phpt b/Zend/tests/bug42211.phpt new file mode 100644 index 0000000000..e9f2a1e212 --- /dev/null +++ b/Zend/tests/bug42211.phpt @@ -0,0 +1,30 @@ +--TEST-- +Bug #42211 (property_exists() fails to find protected properties from a parent class) +--FILE-- +foo(); +$b = new B(); +$b->foo(); +--EXPECT-- +bool(true) +bool(false) +bool(false) +bool(true) +bool(true) +bool(false) + diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 0f4cf86b20..7b036edfff 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -979,7 +979,8 @@ ZEND_FUNCTION(property_exists) } zend_unmangle_property_name(property_info->name, property_info->name_length, &class_name, &prop_name); if (!strncmp(class_name, "*", 1)) { - if (instanceof_function(EG(scope), ce TSRMLS_CC)) { + if (instanceof_function(EG(scope), ce TSRMLS_CC) || + (EG(This) && instanceof_function(Z_OBJCE_P(EG(This)), ce TSRMLS_CC))) { RETURN_TRUE; } RETURN_FALSE; -- 2.50.1