From aba69308970a11bc22787ad6780f884404d186ad Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 2 May 2020 16:57:24 +0200 Subject: [PATCH] Fix #79467: data:// wrappers are writable Despite the docs claiming that data: wrappers would not be writable[1], they are implemented as writing to a memory stream. That does not seem to be particularly sensible, so we disallow writing altogether. [1] --- ext/standard/tests/streams/bug79467.phpt | 9 +++++++++ main/streams/memory.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/streams/bug79467.phpt diff --git a/ext/standard/tests/streams/bug79467.phpt b/ext/standard/tests/streams/bug79467.phpt new file mode 100644 index 0000000000000..061160173de7a --- /dev/null +++ b/ext/standard/tests/streams/bug79467.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #79467 (data:// wrappers are writable) +--FILE-- + +--EXPECTF-- +Notice: file_put_contents(): Stream is not writable in %s on line %d +bool(false) diff --git a/main/streams/memory.c b/main/streams/memory.c index 6929ee480dcc1..35be57d3c38f1 100644 --- a/main/streams/memory.c +++ b/main/streams/memory.c @@ -619,7 +619,7 @@ PHPAPI php_stream *_php_stream_temp_open(int mode, size_t max_memory_usage, char /* }}} */ PHPAPI const php_stream_ops php_stream_rfc2397_ops = { - php_stream_temp_write, php_stream_temp_read, + NULL, php_stream_temp_read, php_stream_temp_close, php_stream_temp_flush, "RFC2397", php_stream_temp_seek,