summaryrefslogtreecommitdiffstats
path: root/toolkit/crashreporter/breakpad-patches/10-macho-cpu-subtype.patch
blob: be743f9fe7a1aed77339e5399d278cdc233d8454 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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);