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);
|