authorgravatar for mathias.lafeldt@gmail.comMathias Lafeldt <mathias.lafeldt@gmail.com> 2025-03-11 07:12:13+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-03-11 11:20:55-07:00
logba97b1a2a22a52fba4289b1851937ad9772f36f4
treecea33f76691226ac76c6ba2c7a4f56e751dee081
parent72775adcd02ef8baea385430fe18404a1df189d5

Merge pull request #23193 from mlafeldt/fix-macho-detection

Fetch: enhance Mach-O executable detection for modern Macs closes #21044

1 files changed, 10 insertions(+), 1 deletions(-)

src/Package/Fetch.zig+10-1
...@@ -1850,7 +1850,11 @@ const FileHeader = struct {...@@ -1850,7 +1850,11 @@ const FileHeader = struct {
1850 return magic_number == std.macho.MH_MAGIC or1850 return magic_number == std.macho.MH_MAGIC or
1851 magic_number == std.macho.MH_MAGIC_64 or1851 magic_number == std.macho.MH_MAGIC_64 or
1852 magic_number == std.macho.FAT_MAGIC or1852 magic_number == std.macho.FAT_MAGIC or
1853 magic_number == std.macho.FAT_MAGIC_64;1853 magic_number == std.macho.FAT_MAGIC_64 or
1854 magic_number == std.macho.MH_CIGAM or
1855 magic_number == std.macho.MH_CIGAM_64 or
1856 magic_number == std.macho.FAT_CIGAM or
1857 magic_number == std.macho.FAT_CIGAM_64;
1854 }1858 }
18551859
1856 pub fn isExecutable(self: *FileHeader) bool {1860 pub fn isExecutable(self: *FileHeader) bool {
...@@ -1875,6 +1879,11 @@ test FileHeader {...@@ -1875,6 +1879,11 @@ test FileHeader {
1875 h.bytes_read = 0;1879 h.bytes_read = 0;
1876 h.update(&macho64_magic_bytes);1880 h.update(&macho64_magic_bytes);
1877 try std.testing.expect(h.isExecutable());1881 try std.testing.expect(h.isExecutable());
1882
1883 const macho64_cigam_bytes = [_]u8{ 0xFE, 0xED, 0xFA, 0xCF };
1884 h.bytes_read = 0;
1885 h.update(&macho64_cigam_bytes);
1886 try std.testing.expect(h.isExecutable());
1878}1887}
18791888
1880// Result of the `unpackResource` operation. Enables collecting errors from1889// Result of the `unpackResource` operation. Enables collecting errors from