mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix usage of casted string in ReflectionParameter ctor
Fixes oss-fuzz #27755.
This commit is contained in:
parent
d016434ad3
commit
706241f82d
2 changed files with 20 additions and 2 deletions
|
@ -2306,10 +2306,10 @@ ZEND_METHOD(reflection_parameter, __construct)
|
|||
/* nothing to do. don't set is_closure since is the invoke handler,
|
||||
not the closure itself */
|
||||
} else if ((fptr = zend_hash_find_ptr(&ce->function_table, lcname)) == NULL) {
|
||||
zend_throw_exception_ex(reflection_exception_ptr, 0,
|
||||
"Method %s::%s() does not exist", ZSTR_VAL(ce->name), ZSTR_VAL(name));
|
||||
zend_string_release(name);
|
||||
zend_string_release(lcname);
|
||||
zend_throw_exception_ex(reflection_exception_ptr, 0,
|
||||
"Method %s::%s() does not exist", ZSTR_VAL(ce->name), Z_STRVAL_P(method));
|
||||
return;
|
||||
}
|
||||
zend_string_release(name);
|
||||
|
|
18
ext/reflection/tests/ReflectionParameter_ctor_cast.phpt
Normal file
18
ext/reflection/tests/ReflectionParameter_ctor_cast.phpt
Normal file
|
@ -0,0 +1,18 @@
|
|||
--TEST--
|
||||
Test method name string cast in ReflectionParameter ctor
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class A {}
|
||||
try {
|
||||
new ReflectionParameter([
|
||||
A::class,
|
||||
new class { public function __toString() { return 'method'; } }
|
||||
], 'param');
|
||||
} catch (ReflectionException $e) {
|
||||
echo $e->getMessage(), "\n";
|
||||
}
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
Method A::method() does not exist
|
Loading…
Add table
Add a link
Reference in a new issue