:: commit b2cc8b74a67d02002a60a54eaedfb7f4f1756c19

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

parents: 44b8493555

lib/elf: Fix section header table size check falsely rejecting valid ELFs

diff --git a/common/lib/elf.c b/common/lib/elf.c
index 200d8dde..9dd81f6f 100644
--- a/common/lib/elf.c
+++ b/common/lib/elf.c
@@ -215,7 +215,7 @@ struct elf_section_hdr_info elf64_section_hdr_info(uint8_t *elf, size_t file_siz
 
     elf64_validate(hdr);
 
-    if (CHECKED_ADD(CHECKED_MUL(hdr->sh_num, hdr->shdr_size, return info),
+    if (CHECKED_ADD((uint64_t)hdr->sh_num * hdr->shdr_size,
             hdr->shoff, return info) > file_size) {
         return info;
     }
@@ -235,7 +235,7 @@ struct elf_section_hdr_info elf32_section_hdr_info(uint8_t *elf, size_t file_siz
 
     elf32_validate(hdr);
 
-    if (CHECKED_ADD(CHECKED_MUL(hdr->sh_num, hdr->shdr_size, return info),
+    if (CHECKED_ADD((uint64_t)hdr->sh_num * hdr->shdr_size,
             hdr->shoff, return info) > file_size) {
         return info;
     }
tab: 248 wrap: offon