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>
Fri, 9 Jun 2023 19:37:27 +0000 (21:37 +0200)
Gbp-Pq: Name 0014-lp564920-fix-big-files.patch

main/streams/plain_wrapper.c

index e9a30f333401631c27820b07db79e9b5696bf453..9b19d0ff86ed1775f5742f8442b0255657faf3b0 100644 (file)
@@ -753,7 +753,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) {