mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-06-01 04:34:49 +08:00
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:
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user