From: Dmitry Stogov Date: Wed, 8 Aug 2007 13:32:46 +0000 (+0000) Subject: Fixed bug #42211 (property_exists() fails to find protected properties from a parent... X-Git-Tag: php-5.2.4RC2~64 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ef7166481700b670156f9ea80b84a53200ebc698;p=php Fixed bug #42211 (property_exists() fails to find protected properties from a parent class) --- 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;