diff mbox series

[12/17] bsd-user: Use guest_range_valid_untagged to validate range

Message ID 20240802235617.7971-13-imp@bsdimp.com (mailing list archive)
State New, archived
Headers show
Series For 9.2: A bunch of cleanups and work towards variable pagesize support | expand

Commit Message

Warner Losh Aug. 2, 2024, 11:56 p.m. UTC
This is the generic validation function, so remove some hand-rolled
ones.

Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/mmap.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

Comments

Richard Henderson Aug. 4, 2024, 9:30 p.m. UTC | #1
On 8/3/24 09:56, Warner Losh wrote:
> This is the generic validation function, so remove some hand-rolled
> ones.
> 
> Signed-off-by: Warner Losh<imp@bsdimp.com>
> ---
>   bsd-user/mmap.c | 11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~
diff mbox series

Patch

diff --git a/bsd-user/mmap.c b/bsd-user/mmap.c
index fc69cb43ebd..ed8d31a9048 100644
--- a/bsd-user/mmap.c
+++ b/bsd-user/mmap.c
@@ -74,9 +74,10 @@  int target_mprotect(abi_ulong start, abi_ulong len, int prot)
     if ((start & ~TARGET_PAGE_MASK) != 0)
         return -EINVAL;
     len = TARGET_PAGE_ALIGN(len);
+    if (!guest_range_valid_untagged(start, len)) {
+        return -ENOMEM;
+    }
     end = start + len;
-    if (end < start)
-        return -EINVAL;
     prot &= PROT_READ | PROT_WRITE | PROT_EXEC;
     if (len == 0)
         return 0;
@@ -689,11 +690,13 @@  int target_munmap(abi_ulong start, abi_ulong len)
            TARGET_ABI_FMT_lx "\n",
            start, len);
 #endif
-    if (start & ~TARGET_PAGE_MASK)
+    if (start & ~TARGET_PAGE_MASK) {
         return -EINVAL;
+    }
     len = TARGET_PAGE_ALIGN(len);
-    if (len == 0)
+    if (len == 0 || !guest_range_valid_untagged(start, len)) {
         return -EINVAL;
+    }
     mmap_lock();
     end = start + len;
     real_start = start & qemu_host_page_mask;