mirror of
https://github.com/RGBCube/serenity
synced 2026-01-16 17:41:00 +00:00
We now validate the full range of userspace memory passed into syscalls instead of just checking that the first and last byte of the memory are in process-owned regions. This fixes an issue where it was possible to avoid rejection of invalid addresses that sat between two valid ones, simply by passing a valid address and a size large enough to put the end of the range at another valid address. I added a little test utility that tries to provoke EFAULT in various ways to help verify this. I'm sure we can think of more ways to test this but it's at least a start. :^) Thanks to mozjag for pointing out that this code was still lacking! Incidentally this also makes backtraces work again. Fixes #989. |
||
|---|---|---|
| .. | ||
| AnonymousVMObject.cpp | ||
| AnonymousVMObject.h | ||
| InodeVMObject.cpp | ||
| InodeVMObject.h | ||
| MemoryManager.cpp | ||
| MemoryManager.h | ||
| PageDirectory.cpp | ||
| PageDirectory.h | ||
| PhysicalAddress.h | ||
| PhysicalPage.cpp | ||
| PhysicalPage.h | ||
| PhysicalRegion.cpp | ||
| PhysicalRegion.h | ||
| PurgeableVMObject.cpp | ||
| PurgeableVMObject.h | ||
| RangeAllocator.cpp | ||
| RangeAllocator.h | ||
| Region.cpp | ||
| Region.h | ||
| VirtualAddress.h | ||
| VMObject.cpp | ||
| VMObject.h | ||