From 236dcf770289200d404caa819a9aea3a0aaae44d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 14 Apr 2020 12:52:13 +0200 Subject: [PATCH] LibBareMetal: Add more assertions in copy_{to,from}_user() Assert that the source/destination address is in kernel space when appropriate. This is mostly to give ourselves an error if we're doing something we were not expecting to be doing. --- Libraries/LibBareMetal/StdLib.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Libraries/LibBareMetal/StdLib.cpp b/Libraries/LibBareMetal/StdLib.cpp index ce7c6b13bc..f487c5775d 100644 --- a/Libraries/LibBareMetal/StdLib.cpp +++ b/Libraries/LibBareMetal/StdLib.cpp @@ -50,6 +50,7 @@ extern "C" { void copy_to_user(void* dest_ptr, const void* src_ptr, size_t n) { ASSERT(Kernel::is_user_range(VirtualAddress(dest_ptr), n)); + ASSERT(!Kernel::is_user_range(VirtualAddress(src_ptr), n)); Kernel::SmapDisabler disabler; memcpy(dest_ptr, src_ptr, n); } @@ -57,6 +58,7 @@ void copy_to_user(void* dest_ptr, const void* src_ptr, size_t n) void copy_from_user(void* dest_ptr, const void* src_ptr, size_t n) { ASSERT(Kernel::is_user_range(VirtualAddress(src_ptr), n)); + ASSERT(!Kernel::is_user_range(VirtualAddress(dest_ptr), n)); Kernel::SmapDisabler disabler; memcpy(dest_ptr, src_ptr, n); }