From 9392b9cd73a2e9bf438f92b0c91770e31e2bf00c Mon Sep 17 00:00:00 2001 From: Hannes Magnusson Date: Sun, 29 May 2011 12:29:19 +0000 Subject: [PATCH] Fixed bug #54946 (stream_get_contents infinite loop) --- ext/standard/tests/streams/bug54946.phpt | 40 ++++++++++++++++++++++++ main/streams/streams.c | 3 ++ 2 files changed, 43 insertions(+) create mode 100644 ext/standard/tests/streams/bug54946.phpt diff --git a/ext/standard/tests/streams/bug54946.phpt b/ext/standard/tests/streams/bug54946.phpt new file mode 100644 index 0000000000..b3fa73df5c --- /dev/null +++ b/ext/standard/tests/streams/bug54946.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug#54946 stream_get_contents infinite loop +--FILE-- + +===DONE=== +--EXPECT-- +string(0) "" +string(0) "" +string(0) "" +===DONE=== + diff --git a/main/streams/streams.c b/main/streams/streams.c index 4a227e8f02..1017f22124 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1362,6 +1362,9 @@ PHPAPI size_t _php_stream_copy_to_mem(php_stream *src, char **buf, size_t maxlen ptr = *buf = pemalloc_rel_orig(maxlen + 1, persistent); while ((len < maxlen) && !php_stream_eof(src)) { ret = php_stream_read(src, ptr, maxlen - len); + if (!ret) { + break; + } len += ret; ptr += ret; } -- 2.50.1