summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2004-11-15 23:43:12 +0000
committerIlia Alshanetsky <iliaa@php.net>2004-11-15 23:43:12 +0000
commitd98a44d483233054c7df6cff3baabadea991e629 (patch)
treecba573dfeb1b20cc7358afbd01c4e0d10d298050
parenta04722b1b0f41015980872132d67d179a324cc3d (diff)
downloadphp-git-d98a44d483233054c7df6cff3baabadea991e629.tar.gz
Fixed bug #29801 (Set limit on the size of mmapable data).
-rwxr-xr-xmain/php_streams.h7
-rwxr-xr-xmain/streams/streams.c2
2 files changed, 6 insertions, 3 deletions
diff --git a/main/php_streams.h b/main/php_streams.h
index a1fb224396..dae1fce49c 100755
--- a/main/php_streams.h
+++ b/main/php_streams.h
@@ -407,8 +407,11 @@ END_EXTERN_C()
#define PHP_STREAM_OPTION_RETURN_NOTIMPL -2 /* underlying stream does not implement; streams can handle it instead */
/* copy up to maxlen bytes from src to dest. If maxlen is PHP_STREAM_COPY_ALL, copy until eof(src).
- * Uses mmap if the src is a plain file and at offset 0 */
-#define PHP_STREAM_COPY_ALL -1
+ * Uses mmap if the src is a plain file and at offset 0
+ * To ensure we don't take up too much memory when reading large files, set the default mmap length
+ * at this many bytes */
+#define PHP_STREAM_COPY_ALL 2000000
+
BEGIN_EXTERN_C()
PHPAPI size_t _php_stream_copy_to_stream(php_stream *src, php_stream *dest, size_t maxlen STREAMS_DC TSRMLS_DC);
#define php_stream_copy_to_stream(src, dest, maxlen) _php_stream_copy_to_stream((src), (dest), (maxlen) STREAMS_CC TSRMLS_CC)
diff --git a/main/streams/streams.c b/main/streams/streams.c
index c1ff46ce6b..7d2700e08c 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -1162,7 +1162,7 @@ PHPAPI size_t _php_stream_passthru(php_stream * stream STREAMS_DC TSRMLS_DC)
char *p;
size_t mapped;
- p = php_stream_mmap_range(stream, php_stream_tell(stream), 0, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
+ p = php_stream_mmap_range(stream, php_stream_tell(stream), PHP_STREAM_COPY_ALL, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped);
if (p) {
PHPWRITE(p, mapped);