mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Fix leak of invalid stream_read() return value
Fixes oss-fuzz 6225190686687232 (part of #38542).
This commit is contained in:
parent
6154aa652d
commit
2f798d99b7
2 changed files with 25 additions and 0 deletions
24
ext/standard/tests/streams/stream_read_object_return.phpt
Normal file
24
ext/standard/tests/streams/stream_read_object_return.phpt
Normal file
|
@ -0,0 +1,24 @@
|
|||
--TEST--
|
||||
Returning an object from stream_read() is invalid, but should not leak
|
||||
--FILE--
|
||||
<?php
|
||||
class MyStream {
|
||||
function stream_open() {
|
||||
return true;
|
||||
}
|
||||
function stream_stat() {
|
||||
return false;
|
||||
}
|
||||
function stream_read() {
|
||||
return new stdClass;
|
||||
}
|
||||
}
|
||||
stream_wrapper_register('mystream', MyStream::class);
|
||||
try {
|
||||
var_dump(file_get_contents('mystream://'));
|
||||
} catch (Error $e) {
|
||||
echo $e->getMessage(), "\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
Object of class stdClass could not be converted to string
|
|
@ -648,6 +648,7 @@ static ssize_t php_userstreamop_read(php_stream *stream, char *buf, size_t count
|
|||
}
|
||||
|
||||
if (!try_convert_to_string(&retval)) {
|
||||
zval_ptr_dtor(&retval);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue