:: commit 87a5d4f509fb5a57d6288baf21eabc287ae21f81

mintsuki <mintsuki@protonmail.com> — 2022-06-19 18:16

parents: bf23488fd5

multiboot: Fix section location calculation

diff --git a/common/protos/multiboot1.c b/common/protos/multiboot1.c
index f94eb620..edb57bc2 100644
--- a/common/protos/multiboot1.c
+++ b/common/protos/multiboot1.c
@@ -155,7 +155,7 @@ bool multiboot1_load(char *config, char *cmdline) {
         memcpy(sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num);
 
         for (size_t i = 0; i < section_hdr_info->num; i++) {
-            struct elf64_shdr *shdr = (void *)sections + section_hdr_info->section_offset + i * section_hdr_info->section_entry_size;
+            struct elf64_shdr *shdr = (void *)sections + i * section_hdr_info->section_entry_size;
 
             if (shdr->sh_addr != 0 || shdr->sh_size == 0) {
                 continue;
diff --git a/common/protos/multiboot2.c b/common/protos/multiboot2.c
index 5aaa8ed6..fd2adf6e 100644
--- a/common/protos/multiboot2.c
+++ b/common/protos/multiboot2.c
@@ -318,7 +318,7 @@ bool multiboot2_load(char *config, char* cmdline) {
         memcpy(tag->sections, kernel + section_hdr_info->section_offset, section_hdr_info->section_entry_size * section_hdr_info->num);
 
         for (size_t i = 0; i < section_hdr_info->num; i++) {
-            struct elf64_shdr *shdr = (void *)tag->sections + section_hdr_info->section_offset + i * section_hdr_info->section_entry_size;
+            struct elf64_shdr *shdr = (void *)tag->sections + i * section_hdr_info->section_entry_size;
 
             if (shdr->sh_addr != 0 || shdr->sh_size == 0) {
                 continue;
tab: 248 wrap: offon