fixed logic error in ElfHeader::parseDynamicTable when the PT_DYNAMIC header exists and the dynamic table is not also in a PT_LOAD segment

This commit is contained in:
Andrew Strelsky
2023-09-16 06:21:19 -04:00
committed by ghidra1
parent fbdc01c33a
commit d7c854452b
@@ -702,15 +702,16 @@ public class ElfHeader implements StructConverter {
}
ElfProgramHeader loadHeader = getProgramLoadHeaderContaining(vaddr);
if (loadHeader != null) {
long dynamicTableOffset = loadHeader.getOffset() +
(dynamicHeaders[0].getVirtualAddress() - loadHeader.getVirtualAddress());
dynamicTable = new ElfDynamicTable(reader, this, dynamicTableOffset,
dynamicHeaders[0].getVirtualAddress());
return;
if (loadHeader == null) {
loadHeader = dynamicHeaders[0];
}
long dynamicTableOffset = loadHeader.getOffset() +
(dynamicHeaders[0].getVirtualAddress() - loadHeader.getVirtualAddress());
dynamicTable = new ElfDynamicTable(reader, this, dynamicTableOffset,
dynamicHeaders[0].getVirtualAddress());
return;
}
else if (dynamicHeaders.length > 1) {
if (dynamicHeaders.length > 1) {
errorConsumer.accept("Multiple ELF Dynamic table program headers found");
}