From a87544fe8b39a3cdf57d6f48eb5b72dce6375221 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 19 Feb 2020 22:19:55 +0100 Subject: [PATCH] Kernel: Refuse to allocate 0 bytes of virtual address space --- Kernel/VM/RangeAllocator.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Kernel/VM/RangeAllocator.cpp b/Kernel/VM/RangeAllocator.cpp index 4504d810c6b..509d7e4a713 100644 --- a/Kernel/VM/RangeAllocator.cpp +++ b/Kernel/VM/RangeAllocator.cpp @@ -96,6 +96,9 @@ void RangeAllocator::carve_at_index(int index, const Range& range) Range RangeAllocator::allocate_anywhere(size_t size, size_t alignment) { + if (!size) + return {}; + #ifdef VM_GUARD_PAGES // NOTE: We pad VM allocations with a guard page on each side. size_t effective_size = size + PAGE_SIZE * 2; @@ -135,6 +138,9 @@ Range RangeAllocator::allocate_anywhere(size_t size, size_t alignment) Range RangeAllocator::allocate_specific(VirtualAddress base, size_t size) { + if (!size) + return {}; + Range allocated_range(base, size); for (int i = 0; i < m_available_ranges.size(); ++i) { auto& available_range = m_available_ranges[i];