mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 06:17:35 +00:00
Kernel: Add a way to specify which memory regions can make syscalls
This patch adds sys$msyscall() which is loosely based on an OpenBSD mechanism for preventing syscalls from non-blessed memory regions. It works similarly to pledge and unveil, you can call it as many times as you like, and when you're finished, you call it with a null pointer and it will stop accepting new regions from then on. If a syscall later happens and doesn't originate from one of the previously blessed regions, the kernel will simply crash the process.
This commit is contained in:
parent
d57b4128a1
commit
823186031d
10 changed files with 43 additions and 1 deletions
|
@ -105,6 +105,7 @@ OwnPtr<Region> Region::clone(Process& new_owner)
|
|||
region->copy_purgeable_page_ranges(*this);
|
||||
region->set_mmap(m_mmap);
|
||||
region->set_shared(m_shared);
|
||||
region->set_syscall_region(is_syscall_region());
|
||||
return region;
|
||||
}
|
||||
|
||||
|
@ -127,6 +128,7 @@ OwnPtr<Region> Region::clone(Process& new_owner)
|
|||
ASSERT(vmobject().is_anonymous());
|
||||
clone_region->set_stack(true);
|
||||
}
|
||||
clone_region->set_syscall_region(is_syscall_region());
|
||||
clone_region->set_mmap(m_mmap);
|
||||
return clone_region;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue