changeset: 571402:0c63dcd7a1c6 user: Steven Michaud 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);