[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 04/23] bsd-user/mmap.c: mmap return ENOMEM on overflow
From: |
Warner Losh |
Subject: |
[PULL v2 04/23] bsd-user/mmap.c: mmap return ENOMEM on overflow |
Date: |
Mon, 18 Oct 2021 13:00:56 -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 | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c
index 6f33aec58b..f0be3b12cf 100644
--- a/bsd-user/mmap.c
+++ b/bsd-user/mmap.c
@@ -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;
--
2.32.0
- [PULL v2 00/23] Pull bsd user 20211018 patches, Warner Losh, 2021/10/18
- [PULL v2 01/23] bsd-user/mmap.c: Always zero MAP_ANONYMOUS memory in mmap_frag(), Warner Losh, 2021/10/18
- [PULL v2 03/23] bsd-user/mmap.c: MAP_ symbols are defined, so no need for ifdefs, Warner Losh, 2021/10/18
- [PULL v2 06/23] bsd-user/mmap.c: Convert to qemu_log logging for mmap debugging, Warner Losh, 2021/10/18
- [PULL v2 08/23] bsd-user/mmap.c: Implement MAP_EXCL, required by jemalloc in head, Warner Losh, 2021/10/18
- [PULL v2 09/23] bsd-user/mmap.c: assert that target_mprotect cannot fail, Warner Losh, 2021/10/18
- [PULL v2 04/23] bsd-user/mmap.c: mmap return ENOMEM on overflow,
Warner Losh <=
- [PULL v2 02/23] bsd-user/mmap.c: check pread's return value to fix warnings with _FORTIFY_SOURCE, Warner Losh, 2021/10/18
- [PULL v2 05/23] bsd-user/mmap.c: mmap prefer MAP_ANON for BSD, Warner Losh, 2021/10/18
- [PULL v2 11/23] bsd-user/target_os-user.h: Remove support for FreeBSD older than 12.0, Warner Losh, 2021/10/18
- [PULL v2 10/23] meson: *-user: only descend into *-user when configured, Warner Losh, 2021/10/18
- [PULL v2 13/23] bsd-user: TARGET_RESET define is unused, remove it, Warner Losh, 2021/10/18
- [PULL v2 12/23] bsd-user/strace.list: Remove support for FreeBSD versions older than 12.0, Warner Losh, 2021/10/18
- [PULL v2 07/23] bsd-user/mmap.c: Don't mmap fd == -1 independently from MAP_ANON flag, Warner Losh, 2021/10/18
- [PULL v2 14/23] bsd-user: export get_errno and is_error from syscall.c, Warner Losh, 2021/10/18
- [PULL v2 17/23] bsd-user/target_os_elf.h: Remove fallback ELF_HWCAP and reorder, Warner Losh, 2021/10/18
- [PULL v2 18/23] bsd-user/target_os_elf: If ELF_HWCAP2 is defined, publish it, Warner Losh, 2021/10/18