Source code

Revision control

Other Tools

changeset: 571402:0c63dcd7a1c6
user: Steven Michaud <smichaud@pobox.com>
date: Tue Nov 19 21:42:37 2019 +0000
summary: Bug 1371390 - Pay attention to macho images' cpusubtype when creating minidumps (revised). r=gsvelto
diff --git a/src/common/mac/macho_walker.cc b/src/common/mac/macho_walker.cc
--- a/src/common/mac/macho_walker.cc
+++ b/src/common/mac/macho_walker.cc
@@ -151,16 +151,18 @@ bool MachoWalker::FindHeader(cpu_type_t
// header
struct mach_header header;
if (!ReadBytes(&header, sizeof(header), 0))
return false;
if (magic == MH_CIGAM || magic == MH_CIGAM_64)
breakpad_swap_mach_header(&header);
+ header.cpusubtype &= ~CPU_SUBTYPE_MASK;
+
if (cpu_type != header.cputype ||
(cpu_subtype != CPU_SUBTYPE_MULTIPLE &&
cpu_subtype != header.cpusubtype)) {
return false;
}
offset = 0;
return true;
@@ -180,16 +182,18 @@ bool MachoWalker::FindHeader(cpu_type_t
struct fat_arch arch;
for (uint32_t i = 0; i < fat.nfat_arch; ++i) {
if (!ReadBytes(&arch, sizeof(arch), offset))
return false;
if (NXHostByteOrder() != NX_BigEndian)
breakpad_swap_fat_arch(&arch, 1);
+ arch.cpusubtype &= ~CPU_SUBTYPE_MASK;
+
if (arch.cputype == cpu_type &&
(cpu_subtype == CPU_SUBTYPE_MULTIPLE ||
arch.cpusubtype == cpu_subtype)) {
offset = arch.offset;
return true;
}
offset += sizeof(arch);