mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:57:43 +00:00
Kernel: Assert that copy_to/from_user() are called with user addresses
This will panic the kernel immediately if these functions are misused so we can catch it and fix the misuse. This patch fixes a couple of misuses: - create_signal_trampolines() writes to a user-accessible page above the 3GB address mark. We should really get rid of this page but that's a whole other thing. - CoW faults need to use copy_from_user rather than copy_to_user since it's the *source* pointer that points to user memory. - Inode faults need to use memcpy rather than copy_to_user since we're copying a kernel stack buffer into a quickmapped page. This should make the copy_to/from_user() functions slightly less useful for exploitation. Before this, they were essentially just glorified memcpy() with SMAP disabled. :^)
This commit is contained in:
parent
2cd212e5df
commit
f7b394e9a1
6 changed files with 33 additions and 15 deletions
|
@ -42,9 +42,9 @@ extern "C" {
|
|||
|
||||
static_assert(sizeof(size_t) == 4);
|
||||
|
||||
void* copy_to_user(void*, const void*, size_t);
|
||||
void* copy_from_user(void*, const void*, size_t);
|
||||
void* memset_user(void*, int, size_t);
|
||||
void copy_to_user(void*, const void*, size_t);
|
||||
void copy_from_user(void*, const void*, size_t);
|
||||
void memset_user(void*, int, size_t);
|
||||
|
||||
void* memcpy(void*, const void*, size_t);
|
||||
char* strcpy(char*, const char*);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue