felipe Thu Oct 30 15:56:23 2008 UTC Added files: (Branch: PHP_5_2) /php-src/ext/standard/tests/streams stream_get_contents_001.phpt
Modified files: /php-src/ext/standard streamsfuncs.c Log: - MFB: Fixed memory leak when using offset out of range. (php_stream_copy_to_mem returns 0, but the empty string is alloced) http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.58.2.6.2.26&r2=1.58.2.6.2.27&diff_format=u Index: php-src/ext/standard/streamsfuncs.c diff -u php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.26 php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.27 --- php-src/ext/standard/streamsfuncs.c:1.58.2.6.2.26 Thu Oct 30 14:36:34 2008 +++ php-src/ext/standard/streamsfuncs.c Thu Oct 30 15:56:23 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.c,v 1.58.2.6.2.26 2008/10/30 14:36:34 felipe Exp $ */ +/* $Id: streamsfuncs.c,v 1.58.2.6.2.27 2008/10/30 15:56:23 felipe Exp $ */ #include "php.h" #include "php_globals.h" @@ -411,18 +411,16 @@ RETURN_FALSE; } - if ((len = php_stream_copy_to_mem(stream, &contents, maxlen, 0)) > 0) { - - if (PG(magic_quotes_runtime)) { + len = php_stream_copy_to_mem(stream, &contents, maxlen, 0); + + if (contents) { + if (len && PG(magic_quotes_runtime)) { contents = php_addslashes(contents, len, &newlen, 1 TSRMLS_CC); /* 1 = free source string */ len = newlen; } - RETVAL_STRINGL(contents, len, 0); - } else if (len == 0) { - RETVAL_EMPTY_STRING(); } else { - RETVAL_FALSE; + RETVAL_EMPTY_STRING(); } } /* }}} */ http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/streams/stream_get_contents_001.phpt?view=markup&rev=1.1 Index: php-src/ext/standard/tests/streams/stream_get_contents_001.phpt +++ php-src/ext/standard/tests/streams/stream_get_contents_001.phpt --TEST-- stream_get_contents() - Testing offset out of range --FILE-- <?php $tmp = tmpfile(); fwrite($tmp, "12345"); echo stream_get_contents($tmp, 2, 5), "--\n"; echo stream_get_contents($tmp, 2), "--\n"; echo stream_get_contents($tmp, 2, 3), "--\n"; echo stream_get_contents($tmp, 2, -1), "--\n"; @unlink($tmp); ?> --EXPECT-- -- -- 45-- -- -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php