:: commit ce71456f4b6cfe285513548857629f6d0e0cd683

Mintsuki <mintsuki@protonmail.com> — 2026-02-08 03:54

parents: 7919175926

protos/multiboot2: Guard max_addr - length underflow in relocation preference

diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index 38d699fc..7804d13f 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -386,6 +386,9 @@ noreturn void multiboot2_load(char *config, char* cmdline) {
                 break;
             case 2: // Prefer highest
                 reloc_ascend = false;
+                if (ranges->length > reloc_tag.max_addr) {
+                    goto reloc_fail;
+                }
                 relocated_base = ALIGN_DOWN(reloc_tag.max_addr - ranges->length, reloc_tag.align);
                 if (relocated_base < reloc_tag.min_addr) {
                     goto reloc_fail;
tab: 248 wrap: offon