:: commit 015d01d4be990ade2eb3cc17380811226a226532

Mintsuki <mintsuki@protonmail.com> — 2026-04-18 20:17

parents: de17e9448e

protos/multiboot2: Bound information_request tag size to header area

diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index b7ec894a..15871117 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -164,6 +164,10 @@ noreturn void multiboot2_load(char *config, char* cmdline) {
                 if (request->size < sizeof(struct multiboot_header_tag_information_request)) {
                     panic(true, "multiboot2: Invalid information request tag size");
                 }
+                size_t tag_remaining = (uintptr_t)header + header->header_length - (uintptr_t)tag;
+                if (request->size > tag_remaining) {
+                    panic(true, "multiboot2: Information request tag exceeds header bounds");
+                }
                 uint32_t size = (request->size - sizeof(struct multiboot_header_tag_information_request)) / sizeof(uint32_t);
 
                 for (uint32_t i = 0; i < size; i++) {
tab: 248 wrap: offon