From a6f8cbf6e732d16b5f40e6eed7ee7fa8f4c307ba Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Thu, 13 Jan 2022 19:41:50 +0500 Subject: [PATCH] Write code --- src/multiboot2/header_is_valid.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/multiboot2/header_is_valid.c b/src/multiboot2/header_is_valid.c index a5a4fb2..3f7f14d 100644 --- a/src/multiboot2/header_is_valid.c +++ b/src/multiboot2/header_is_valid.c @@ -11,6 +11,14 @@ bool KernAux_Multiboot2_Header_is_valid( const struct KernAux_Multiboot2_Header *const multiboot2_header ) { + if (multiboot2_header->magic != KERNAUX_MULTIBOOT2_MAGIC) return false; + + if (multiboot2_header->arch != KERNAUX_MULTIBOOT2_ARCH_I386 && + multiboot2_header->arch != KERNAUX_MULTIBOOT2_ARCH_MIPS32) + { + return false; + } + if (multiboot2_header->total_size < sizeof(struct KernAux_Multiboot2_Header) + sizeof(struct KernAux_Multiboot2_HTag_None)) @@ -18,6 +26,15 @@ bool KernAux_Multiboot2_Header_is_valid( return false; } + if (multiboot2_header->checksum != + KERNAUX_MULTIBOOT2_CHECKSUM( + multiboot2_header->arch, + multiboot2_header->total_size + ) + ) { + return false; + } + const struct KernAux_Multiboot2_HTagBase *tag_base = (struct KernAux_Multiboot2_HTagBase*) KERNAUX_MULTIBOOT2_DATA(multiboot2_header);