From: Arnaud Le Blanc Date: Tue, 11 Nov 2008 01:56:33 +0000 (+0000) Subject: MFH: Fixed stream_get_contents() when using $maxlength and socket is not X-Git-Tag: php-5.2.7RC4~37 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c7411c2c9686d6051fe3d2c0f0f5968b9fd79474;p=php MFH: Fixed stream_get_contents() when using $maxlength and socket is not closed. indeyets@php.net on #46049. --- diff --git a/NEWS b/NEWS index 93f2609620..fa32b5decd 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,9 @@ PHP NEWS - Fixed bug #44818 (php://memory writeable when opened read only). (Arnaud) - Fixed bug #30312 (sybase_unbuffered_query calls). (Timm) +- Fixed stream_get_contents() when using $maxlength and socket is not + closed. indeyets@php.net on #46049. (Arnaud) + 06 Nov 2008, PHP 5.2.7RC3 - Added PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION, PHP_EXTRA_VERSION, PHP_VERSION_ID, PHP_ZTS and PHP_DEBUG constants. (Pierre) diff --git a/ext/standard/tests/streams/stream_get_contents_002.phpt b/ext/standard/tests/streams/stream_get_contents_002.phpt new file mode 100644 index 0000000000..66ff3fb189 --- /dev/null +++ b/ext/standard/tests/streams/stream_get_contents_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +stream_get_contents() - Testing on socket with $maxlength +--SKIPIF-- + +--FILE-- + +--EXPECT-- +string(3) "foo" diff --git a/main/streams/streams.c b/main/streams/streams.c index 4dd0f7442c..747aa4b918 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1234,7 +1234,7 @@ PHPAPI size_t _php_stream_copy_to_mem(php_stream *src, char **buf, size_t maxlen if (maxlen > 0) { ptr = *buf = pemalloc_rel_orig(maxlen + 1, persistent); - while ((len < maxlen) & !php_stream_eof(src)) { + while ((len < maxlen) && !php_stream_eof(src)) { ret = php_stream_read(src, ptr, maxlen - len); len += ret; ptr += ret;