From 7a56ac00a04d4fc72052bb679626e723da3eef44 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Wed, 22 Aug 2012 10:50:50 -0300 Subject: [PATCH] - Fixed bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait methods as private) --- Zend/tests/bug62892.phpt | 21 +++++++++++++++++++++ ext/reflection/php_reflection.c | 6 ++++-- 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 Zend/tests/bug62892.phpt diff --git a/Zend/tests/bug62892.phpt b/Zend/tests/bug62892.phpt new file mode 100644 index 00000000000..e6b0e60ff3c --- /dev/null +++ b/Zend/tests/bug62892.phpt @@ -0,0 +1,21 @@ +--TEST-- +Bug #62892 (ReflectionClass::getTraitAliases crashes on importing trait methods as private) +--FILE-- +getTraitAliases()); + +?> +--EXPECTF-- +array(0) { +} diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index 6656f58c65e..7c9981924de 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4464,8 +4464,10 @@ ZEND_METHOD(reflection_class, getTraitAliases) int method_name_len; zend_trait_method_reference *cur_ref = ce->trait_aliases[i]->trait_method; - method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->class_name, cur_ref->method_name); - add_assoc_stringl_ex(return_value, ce->trait_aliases[i]->alias, ce->trait_aliases[i]->alias_len + 1, method_name, method_name_len, 0); + if (ce->trait_aliases[i]->alias) { + method_name_len = spprintf(&method_name, 0, "%s::%s", cur_ref->class_name, cur_ref->method_name); + add_assoc_stringl_ex(return_value, ce->trait_aliases[i]->alias, ce->trait_aliases[i]->alias_len + 1, method_name, method_name_len, 0); + } i++; } }