diff options
| -rw-r--r-- | NEWS | 2 | ||||
| -rw-r--r-- | Zend/tests/bug65291.phpt | 24 | ||||
| -rw-r--r-- | Zend/zend_builtin_functions.c | 5 | 
3 files changed, 31 insertions, 0 deletions
| @@ -4,6 +4,8 @@ PHP                                                                        NEWS  - Core.    . Improve fix for bug #63186 (compile failure on netbsd). (Matteo) +  . Fixed bug #65291 (get_defined_constants() causes PHP to crash in a very +    limited case). (Arpad)  - Session:    . Fixed bug #62129 (rfc1867 crashes php even though turned off). (gxd305 at diff --git a/Zend/tests/bug65291.phpt b/Zend/tests/bug65291.phpt new file mode 100644 index 0000000000..9e5cca5c35 --- /dev/null +++ b/Zend/tests/bug65291.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #65291 - get_defined_constants() causes PHP to crash in a very limited case. +--FILE-- +<?php + +trait TestTrait +{ +	public static function testStaticFunction() +	{ +		return __CLASS__; +	} +} +class Tester +{ +	use TestTrait; +} + +$foo = Tester::testStaticFunction(); +get_defined_constants(); + +echo $foo; +?> +--EXPECT-- +Tester diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f29676bac0..1aba64e102 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -1926,6 +1926,11 @@ static int add_constant_info(zend_constant *constant, void *arg TSRMLS_DC)  	zval *name_array = (zval *)arg;  	zval *const_val; +	if (!constant->name) { +		/* skip special constants */ +		return 0; +	} +  	MAKE_STD_ZVAL(const_val);  	*const_val = constant->value;  	zval_copy_ctor(const_val); | 
