Skip to content

Commit

Permalink
Fix #430 - :iS failing when ELFs have no hash section
Browse files Browse the repository at this point in the history
  • Loading branch information
radare committed Feb 1, 2024
1 parent b5d5924 commit 9df8797
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/agent/lib/elf/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ function listElfSections(baseAddr: NativePointer) {
return parseSectionHeaders(baseAddr, segment.vmaddr, segment.vmsize, segments);
}
}
return [];
}

function _isElfHeaderAtOffset(offset: NativePointer) : boolean {
Expand All @@ -59,15 +60,18 @@ function parseSectionHeaders(baseAddr: NativePointer, PTDynamicAddr: NativePoint
cursor = cursor.add(16);
}
// HASH Section
let nchain = 0;
const hashTablePtr = dynamicEntries[dynamicTags.DT_HASH].value;
const nbucket = hashTablePtr.readU32();
const nchain = hashTablePtr.add(4).readU32();
sections.push(new Section(
dynamicEntries[dynamicTags.DT_HASH].name,
hashTablePtr,
(nbucket * 4) + (nchain * 4) + 8,
JSON.stringify(utils.belongsTo(segments, hashTablePtr).map((x:any) => x.perm))
));
if (hashTablePtr) {
const nbucket = hashTablePtr.readU32();
nchain = hashTablePtr.add(4).readU32();
sections.push(new Section(
dynamicEntries[dynamicTags.DT_HASH].name,
hashTablePtr,
(nbucket * 4) + (nchain * 4) + 8,
JSON.stringify(utils.belongsTo(segments, hashTablePtr).map((x:any) => x.perm))
));
}
// STRTAB Section
sections.push(new Section(
dynamicEntries[dynamicTags.DT_STRTAB].name,
Expand Down

0 comments on commit 9df8797

Please sign in to comment.