From 0aaea797da2b94db5c18c0c62ba4fbf687ad50aa Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Wed, 16 Jan 2008 14:19:07 +0000 Subject: [PATCH] - Fixed Bug #37964 (Reflection shows private methods of parent class) (felipe@php.net) --- ext/reflection/php_reflection.c | 6 +++- ext/reflection/tests/bug37964.phpt | 50 ++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 ext/reflection/tests/bug37964.phpt diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index bb8d794a9e..eb3dc48310 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -519,7 +519,8 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in zend_hash_internal_pointer_reset_ex(&ce->function_table, &pos); while (zend_hash_get_current_data_ex(&ce->function_table, (void **) &mptr, &pos) == SUCCESS) { - if (!(mptr->common.fn_flags & ZEND_ACC_STATIC)) { + if ((mptr->common.fn_flags & ZEND_ACC_STATIC) == 0 && + ((mptr->common.fn_flags & ZEND_ACC_PRIVATE) == 0 || mptr->common.scope == ce)) { zstr key; uint key_len; ulong num_index; @@ -541,6 +542,9 @@ static void _class_string(string *str, zend_class_entry *ce, zval *obj, char *in zend_hash_move_forward_ex(&ce->function_table, &pos); } string_printf(str, "\n%s - Methods [%d] {", indent, count); + if (!count) { + string_printf(str, "\n"); + } string_append(str, &dyn); string_free(&dyn); } else { diff --git a/ext/reflection/tests/bug37964.phpt b/ext/reflection/tests/bug37964.phpt new file mode 100644 index 0000000000..935119314f --- /dev/null +++ b/ext/reflection/tests/bug37964.phpt @@ -0,0 +1,50 @@ +--TEST-- +Reflection Bug #37964 (Reflection shows private methods of parent class) +--FILE-- + +--EXPECTF-- +Class [ class bar extends foo ] { + @@ %s %s + + - Constants [0] { + } + + - Static properties [0] { + } + + - Static methods [0] { + } + + - Properties [0] { + } + + - Methods [2] { + Method [ private method foobar ] { + @@ %s %d - %d + } + + Method [ protected method test3 ] { + @@ %s %d - %d + } + } +} -- 2.50.1