From 31f65b4607d584611fcf2cee1e7756fb371519f6 Mon Sep 17 00:00:00 2001 From: Robert Xiao Date: Sun, 20 Mar 2022 03:54:32 -0600 Subject: [PATCH] GP-2098 .bss sections don't need valid file offsets The ELF loader incorrectly skips NOBITS sections that have invalid file offsets, like .bss; however, the file offset is ignored for NOBITS sections. This is essentially applying #2136 to the file offset as well. --- .../main/java/ghidra/app/util/opinion/ElfProgramBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java index 1159e134ea..8d08e42f6a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/ElfProgramBuilder.java @@ -2996,7 +2996,8 @@ class ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper { if (type != ElfSectionHeaderConstants.SHT_NULL && (includeOtherBlocks || elfSectionToLoad.isAlloc())) { long fileOffset = elfSectionToLoad.getOffset(); - if (fileOffset < 0 || fileOffset >= fileBytes.getSize()) { + if (type != ElfSectionHeaderConstants.SHT_NOBITS && + (fileOffset < 0 || fileOffset >= fileBytes.getSize())) { log("Skipping section [" + elfSectionToLoad.getNameAsString() + "] with invalid file offset"); continue;