]> git.proxmox.com Git - mirror_qemu.git/commitdiff
bsd-user/mmap.c: mmap return ENOMEM on overflow
authorWarner Losh <imp@bsdimp.com>
Fri, 17 Sep 2021 00:43:01 +0000 (18:43 -0600)
committerWarner Losh <imp@bsdimp.com>
Sun, 17 Oct 2021 22:55:52 +0000 (16:55 -0600)
mmap should return ENOMEM on len overflow rather than EINVAL. Return
EINVAL when len == 0 and ENOMEM when the rounded to a page length is 0.
Found by make check-tcg.

Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
bsd-user/mmap.c

index 6f33aec58bbba4d020fd68ee37540c13f3645058..f0be3b12cff83f571afed668f20edc2726957078 100644 (file)
@@ -455,11 +455,18 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
         goto fail;
     }
 
-    len = TARGET_PAGE_ALIGN(len);
     if (len == 0) {
         errno = EINVAL;
         goto fail;
     }
+
+    /* Check for overflows */
+    len = TARGET_PAGE_ALIGN(len);
+    if (len == 0) {
+        errno = ENOMEM;
+        goto fail;
+    }
+
     real_start = start & qemu_host_page_mask;
     host_offset = offset & qemu_host_page_mask;