Browse Source

Fix GH-19705: do not flush/write buffer on non writeable stream.

Co-authored-by: Jakub Zelenka <bukka@php.net>

close GH-19708
pull/20040/head
David Carlier 2 months ago
parent
commit
175afc4085
No known key found for this signature in database GPG Key ID: 2FB76A8CE6CD2B41
  1. 2
      NEWS
  2. 11
      ext/standard/tests/streams/gh19705.phpt
  3. 2
      main/streams/streams.c

2
NEWS

@ -57,6 +57,8 @@ PHP NEWS
. Fixed bug GH-19248 (Use strerror_r instead of strerror in main).
(Jakub Zelenka)
. Fixed bug GH-17345 (Bug #35916 was not completely fixed). (nielsdos)
. Fixed bug GH-19705 (segmentation when attempting to flush on non seekable
stream. (bukka/David Carlier)
- XMLReader:
. Fixed bug GH-20009 (XMLReader leak on RelaxNG schema failure). (nielsdos)

11
ext/standard/tests/streams/gh19705.phpt

@ -0,0 +1,11 @@
--TEST--
GH-19705 segmentation fault with non writable stream at stream_filter_append call.
--EXTENSIONS--
zlib
--FILE--
<?php
$fh = fopen('data://text/plain,', 'w+',);
var_dump(stream_filter_append($fh, 'zlib.deflate',STREAM_FILTER_WRITE));
?>
--EXPECTF--
resource(%d) of type (stream filter)

2
main/streams/streams.c

@ -1295,7 +1295,7 @@ PHPAPI int _php_stream_flush(php_stream *stream, int closing)
{
int ret = 0;
if (stream->writefilters.head) {
if (stream->writefilters.head && stream->ops->write) {
_php_stream_write_filtered(stream, NULL, 0, closing ? PSFS_FLAG_FLUSH_CLOSE : PSFS_FLAG_FLUSH_INC );
}

Loading…
Cancel
Save