From 3c3fcaaea448bea873b065c4a830d240719ad129 Mon Sep 17 00:00:00 2001 From: Ivan Chikish Date: Thu, 13 Jul 2023 16:05:37 +0300 Subject: [PATCH] [orbis-kernel] Check overflow in kalloc --- orbis-kernel/src/KernelContext.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/orbis-kernel/src/KernelContext.cpp b/orbis-kernel/src/KernelContext.cpp index 8ef3a50a6..48e056d88 100644 --- a/orbis-kernel/src/KernelContext.cpp +++ b/orbis-kernel/src/KernelContext.cpp @@ -100,6 +100,11 @@ void *KernelContext::kalloc(std::size_t size, std::size_t align) { heap = (heap + (align - 1)) & ~(align - 1); auto result = reinterpret_cast(heap); m_heap_next = reinterpret_cast(heap + size); + // Check overflow + if (heap + size < heap) + std::abort(); + if (heap + size > (uintptr_t)&g_context + 0x1'0000'0000) + std::abort(); pthread_mutex_unlock(&m_heap_mtx); return result; }