summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-09-21 10:50:29 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-09-21 10:50:29 +0200
commit2bf2cede8933586bb5be2fd77af650a23fcc936e (patch)
treed74d8514a9fec89dd8f5ef3f1de616c790085abc
parent48e9181519c54877e3e5ea7cd8a7653a90402056 (diff)
downloadphp-git-2bf2cede8933586bb5be2fd77af650a23fcc936e.tar.gz
Initialize attributes for internal functions
Fixes a crash in Symfony SecurityBundle tests.
-rw-r--r--Zend/tests/attributes/029_reflect_internal_symbols.phpt32
-rw-r--r--Zend/zend_API.c1
2 files changed, 33 insertions, 0 deletions
diff --git a/Zend/tests/attributes/029_reflect_internal_symbols.phpt b/Zend/tests/attributes/029_reflect_internal_symbols.phpt
new file mode 100644
index 0000000000..d4dc29a0bb
--- /dev/null
+++ b/Zend/tests/attributes/029_reflect_internal_symbols.phpt
@@ -0,0 +1,32 @@
+--TEST--
+Reflect attributes on different kinds of internal symbols
+--FILE--
+<?php
+
+$rf = new ReflectionFunction('unserialize');
+var_dump($rf->getAttributes());
+
+$rc = new ReflectionClass('DateTime');
+var_dump($rc->getAttributes());
+
+$rm = $rc->getMethod('__construct');
+var_dump($rm->getAttributes());
+
+$rcc = $rc->getReflectionConstant('ATOM');
+var_dump($rcc->getAttributes());
+
+$rp = new ReflectionProperty('Exception', 'message');
+var_dump($rp->getAttributes());
+
+?>
+--EXPECT--
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index ee0e361ed9..6e89da89bb 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -2325,6 +2325,7 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend
internal_function->function_name = zend_string_init_interned(ptr->fname, fname_len, 1);
internal_function->scope = scope;
internal_function->prototype = NULL;
+ internal_function->attributes = NULL;
if (ptr->flags) {
if (!(ptr->flags & ZEND_ACC_PPP_MASK)) {
if (ptr->flags != ZEND_ACC_DEPRECATED && scope) {