mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
GP-5532: Fixed an issue in the Mach-O loader that prevented
uninitialized segments from being mapped into memory (Closes #7949)
This commit is contained in:
parent
1a80aff30a
commit
9f12dbebf1
1 changed files with 15 additions and 9 deletions
|
@ -226,8 +226,12 @@ public class MachoProgramBuilder {
|
|||
for (SegmentCommand segment : segments) {
|
||||
monitor.increment();
|
||||
|
||||
if (segment.getFileSize() > 0 && segment.getVMsize() > 0 &&
|
||||
(allowZeroAddr || segment.getVMaddress() != 0)) {
|
||||
if (segment.getSegmentName().equals(SegmentNames.SEG_PAGEZERO)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (segment.getVMsize() > 0 && (allowZeroAddr || segment.getVMaddress() != 0)) {
|
||||
if (segment.getFileSize() > 0) {
|
||||
if (createMemoryBlock(segment.getSegmentName(),
|
||||
space.getAddress(segment.getVMaddress()), segment.getFileOffset(),
|
||||
segment.getFileSize(), segment.getSegmentName(), source, segment.isRead(),
|
||||
|
@ -235,6 +239,7 @@ public class MachoProgramBuilder {
|
|||
log.appendMsg(String.format("Failed to create block: %s 0x%x 0x%x",
|
||||
segment.getSegmentName(), segment.getVMaddress(), segment.getVMsize()));
|
||||
}
|
||||
}
|
||||
if (segment.getVMsize() > segment.getFileSize()) {
|
||||
// Pad the remaining address range with uninitialized data
|
||||
if (createMemoryBlock(segment.getSegmentName(),
|
||||
|
@ -274,7 +279,8 @@ public class MachoProgramBuilder {
|
|||
AddressSpace sectionSpace = overlaySections.contains(section)
|
||||
? segmentOverlayMap.get(section.getSegmentName())
|
||||
: space;
|
||||
if (section.getSize() > 0 && section.getOffset() > 0 &&
|
||||
if (section.getSize() > 0 &&
|
||||
(section.getOffset() > 0 || section.getType() == SectionTypes.S_ZEROFILL) &&
|
||||
(allowZeroAddr || section.getAddress() != 0)) {
|
||||
if (createMemoryBlock(section.getSectionName(),
|
||||
sectionSpace.getAddress(section.getAddress()), section.getOffset(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue