:: commit 1d33f0e142ce863099069c53f3d9ff2fd778cbf9

Mintsuki <mintsuki@protonmail.com> — 2026-04-14 00:04

parents: 052426c897

protos/limine: Fix request scan loop bound to not read past image_size_before_bss

diff --git a/common/protos/limine.c b/common/protos/limine.c
index 23349b87..e491fe13 100644
--- a/common/protos/limine.c
+++ b/common/protos/limine.c
@@ -546,7 +546,7 @@ noreturn void limine_load(char *config, char *cmdline) {
     bool base_revision_found = false;
     uint64_t *base_rev_p1_ptr = NULL;
     uint64_t *base_rev_p2_ptr = NULL;
-    for (size_t i = 0; i < ALIGN_DOWN(image_size_before_bss, 8); i += 8) {
+    for (size_t i = 0; i + 32 <= image_size_before_bss; i += 8) {
         uint64_t *p = (void *)(uintptr_t)physical_base + i;
 
         // Check if start marker hit
@@ -609,7 +609,7 @@ noreturn void limine_load(char *config, char *cmdline) {
         }
     } else {
         uint64_t common_magic[2] = { LIMINE_COMMON_MAGIC };
-        for (size_t i = 0; i < ALIGN_DOWN(image_size_before_bss, 8); i += 8) {
+        for (size_t i = 0; i + 32 <= image_size_before_bss; i += 8) {
             uint64_t *p = (void *)(uintptr_t)physical_base + i;
 
             // Check if start marker hit
tab: 248 wrap: offon