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