File tree Expand file tree Collapse file tree 3 files changed +23
-1
lines changed
Expand file tree Collapse file tree 3 files changed +23
-1
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,10 @@ PHP NEWS
22|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33?? ??? ????, PHP 8.3.30
44
5+ - Core:
6+ . Fix OSS-Fuzz #465488618 (Wrong assumptions when dumping function signature
7+ with dynamic class const lookup default argument). (ilutov)
8+
59- Bz2:
610 . Fixed bug GH-20620 (bzcompress overflow on large source size).
711 (David Carlier)
Original file line number Diff line number Diff line change 1+ --TEST--
2+ OSS-Fuzz #465488618: Dump function signature with dynamic class const lookup default argument
3+ --FILE--
4+ <?php
5+
6+ class A {
7+ public function test (int $ x ) {}
8+ }
9+
10+ class B extends A {
11+ public function test (string $ x = Foo::{C}) {}
12+ }
13+
14+ ?>
15+ --EXPECTF--
16+ Fatal error: Declaration of B::test(string $x = <expression>) must be compatible with A::test(int $x) in %s on line %d
Original file line number Diff line number Diff line change @@ -973,7 +973,9 @@ static ZEND_COLD zend_string *zend_get_function_declaration(
973973 zend_ast * ast = Z_ASTVAL_P (zv );
974974 if (ast -> kind == ZEND_AST_CONSTANT ) {
975975 smart_str_append (& str , zend_ast_get_constant_name (ast ));
976- } else if (ast -> kind == ZEND_AST_CLASS_CONST ) {
976+ } else if (ast -> kind == ZEND_AST_CLASS_CONST
977+ && ast -> child [1 ]-> kind == ZEND_AST_ZVAL
978+ && Z_TYPE_P (zend_ast_get_zval (ast -> child [1 ])) == IS_STRING ) {
977979 smart_str_append (& str , zend_ast_get_str (ast -> child [0 ]));
978980 smart_str_appends (& str , "::" );
979981 smart_str_append (& str , zend_ast_get_str (ast -> child [1 ]));
You can’t perform that action at this time.
0 commit comments