lp564920-fix-big-files
authorDebian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>
Sat, 2 May 2015 08:26:54 +0000 (10:26 +0200)
committerOndřej Surý <ondrej@debian.org>
Thu, 4 Jul 2024 15:15:46 +0000 (17:15 +0200)
Gbp-Pq: Name 0014-lp564920-fix-big-files.patch

main/streams/plain_wrapper.c

index c92b76d196da0178344ba749bb317b6f057543c6..f484a7dd77e9712181d193d7b71a7ed88fc2dcb6 100644 (file)
@@ -750,7 +750,13 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
 
                                switch (value) {
                                        case PHP_STREAM_MMAP_SUPPORTED:
-                                               return fd == -1 ? PHP_STREAM_OPTION_RETURN_ERR : PHP_STREAM_OPTION_RETURN_OK;
+                                               if (fd == -1)
+                                                       return PHP_STREAM_OPTION_RETURN_ERR;
+                                               /* Don't mmap large files */
+                                               do_fstat(data, 1);
+                                               if (data->sb.st_size > 4 * 1024 * 1024)
+                                                       return PHP_STREAM_OPTION_RETURN_ERR;
+                                               return PHP_STREAM_OPTION_RETURN_OK;
 
                                        case PHP_STREAM_MMAP_MAP_RANGE:
                                                if (do_fstat(data, 1) != 0) {