From d6c0df23945984d7f17dd5a3f8523f4745ed5cb2 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Mon, 30 Mar 2026 18:33:23 -0400 Subject: [PATCH] kernel/guarded_heap: allocate_meta may fail with certain flags set. May fix #20014. --- src/system/kernel/debug/guarded_heap.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/system/kernel/debug/guarded_heap.cpp b/src/system/kernel/debug/guarded_heap.cpp index d4fac9cd96..1cd052c832 100644 --- a/src/system/kernel/debug/guarded_heap.cpp +++ b/src/system/kernel/debug/guarded_heap.cpp @@ -159,6 +159,9 @@ guarded_heap_allocate_meta(guarded_heap& heap, size_t size, uint32 flags) } void* meta = heap.meta_allocator.Allocate(size); + if (meta == NULL) + return NULL; + memset(meta, 0, size); return meta; } @@ -260,6 +263,10 @@ guarded_heap_allocate(guarded_heap& heap, size_t size, size_t alignment, // need to unlock the heap to allocate more. GuardedHeapChunk* spareChunk = (GuardedHeapChunk*) guarded_heap_allocate_meta(heap, sizeof(GuardedHeapChunk), flags); + if (spareChunk == NULL) { + // Various flags can cause this even if there's still memory left. + return NULL; + } // Round up to the page size, plus the guard pages on either end. const size_t guardPages = 1;