From 0093b101383c2606d0be4d430c90589f4ee65051 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 28 Dec 2025 23:09:23 +0000 Subject: [PATCH] Add bounds checking to prevent buffer overflow in bitmap access - Add safety check in allocPage() before accessing pageBitmap - Add safety check in freePage() before accessing pageBitmap - Prevents potential buffer overflow when bitmap size limits are reached Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- kernel/src/memory.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/src/memory.cpp b/kernel/src/memory.cpp index 8010cc9..50d3c11 100644 --- a/kernel/src/memory.cpp +++ b/kernel/src/memory.cpp @@ -74,6 +74,11 @@ void* PhysicalMemoryManager::allocPage() { uint64_t byte = i / 8; uint64_t bit = i % 8; + // Bounds check to prevent buffer overflow + if (byte >= BITMAP_SIZE) { + break; + } + if (!(pageBitmap[byte] & (1 << bit))) { // Mark as used pageBitmap[byte] |= (1 << bit); @@ -111,6 +116,11 @@ void PhysicalMemoryManager::freePage(void* page) { uint64_t byte = pageIdx / 8; uint64_t bit = pageIdx % 8; + // Bounds check to prevent buffer overflow + if (byte >= BITMAP_SIZE) { + return; + } + // Mark as free pageBitmap[byte] &= ~(1 << bit); usedPages--;