From 17e26c8c954b47fe2c1af15b2b77d51580c85f39 Mon Sep 17 00:00:00 2001 From: mintsuki Date: Sun, 9 Jul 2023 03:09:45 +0200 Subject: [PATCH] elf: Fix potential uninitialised usage of bss_size --- common/lib/elf.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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; }