:: commit 17e26c8c954b47fe2c1af15b2b77d51580c85f39

mintsuki <mintsuki@protonmail.com> — 2023-07-09 01:09

parents: 9333f1ca8b

elf: Fix potential uninitialised usage of bss_size

diff --git a/common/lib/elf.c b/common/lib/elf.c
index dc8a8134..035656e6 100644
--- a/common/lib/elf.c
+++ b/common/lib/elf.c
@@ -534,7 +534,7 @@ again:
         }
     }
 
-    uint64_t bss_size;
+    uint64_t bss_size = 0;
 
     for (uint16_t i = 0; i < hdr->ph_num; i++) {
         struct elf64_phdr *phdr = (void *)elf + (hdr->phoff + i * hdr->phdr_size);
@@ -566,9 +566,7 @@ again:
 
         memcpy((void *)(uintptr_t)load_addr, elf + (phdr->p_offset), phdr->p_filesz);
 
-        if (i == hdr->ph_num - 1) {
-            bss_size = phdr->p_memsz - phdr->p_filesz;
-        }
+        bss_size = phdr->p_memsz - phdr->p_filesz;
 
         if (!elf64_apply_relocations(elf, hdr, (void *)(uintptr_t)load_addr, phdr->p_vaddr, phdr->p_memsz, slide)) {
             panic(true, "elf: Failed to apply relocations");
@@ -580,6 +578,8 @@ again:
 #endif
     }
 
+    bss_size = 0;
+
     if (_image_size_before_bss != NULL) {
         *_image_size_before_bss = image_size - bss_size;
     }
tab: 248 wrap: offon