From: Hannes Magnusson Date: Sun, 29 May 2011 12:29:19 +0000 (+0000) Subject: Fixed bug #54946 (stream_get_contents infinite loop) X-Git-Tag: php-5.5.0alpha1~2033 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73c1488fec205da2d9a7db7c07e652342ffaeab1;p=php Fixed bug #54946 (stream_get_contents infinite loop) --- 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; }