mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
3dcec260ed
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 |