diff --git a/ext/standard/tests/streams/stream_read_object_return.phpt b/ext/standard/tests/streams/stream_read_object_return.phpt new file mode 100644 index 00000000000..acb0363f404 --- /dev/null +++ b/ext/standard/tests/streams/stream_read_object_return.phpt @@ -0,0 +1,24 @@ +--TEST-- +Returning an object from stream_read() is invalid, but should not leak +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +Object of class stdClass could not be converted to string diff --git a/main/streams/userspace.c b/main/streams/userspace.c index 0e9059a99e5..271d0cdffbe 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -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; }