mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Merge branch 'PHP-8.1'
* PHP-8.1: Fix leak of invalid stream_read() return value
This commit is contained in:
commit
b976ad09ab
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
|
|
@ -639,6 +639,7 @@ static ssize_t php_userstreamop_read(php_stream *stream, char *buf, size_t count
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!try_convert_to_string(&retval)) {
|
if (!try_convert_to_string(&retval)) {
|
||||||
|
zval_ptr_dtor(&retval);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue