From 2a2f43eada3833d117d73741e64072dcdabfdcd8 Mon Sep 17 00:00:00 2001 From: agra Date: Fri, 12 Jun 2026 16:48:27 +0300 Subject: [PATCH] =?UTF-8?q?test(C1.4):=20objectMagicOk=20=E2=80=94=20corru?= =?UTF-8?q?pt/truncated=20cache=20entries=20recompile,=20never=20poison=20?= =?UTF-8?q?the=20link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/c_import.test.zig | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/c_import.test.zig b/src/c_import.test.zig index e889b89..2d53ff6 100644 --- a/src/c_import.test.zig +++ b/src/c_import.test.zig @@ -55,6 +55,15 @@ test "cSourceCacheKey: llvm version varies the key" { try std.testing.expect(baseKey() != other); } +test "objectMagicOk: accepts Mach-O and ELF, rejects garbage and truncation" { + try std.testing.expect(c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed, 0xfe, 0x00 })); // Mach-O 64 + try std.testing.expect(c_import.objectMagicOk(&.{ 0xce, 0xfa, 0xed, 0xfe })); // Mach-O 32 + try std.testing.expect(c_import.objectMagicOk(&.{ 0x7f, 'E', 'L', 'F', 0x02 })); + try std.testing.expect(!c_import.objectMagicOk("not an object file")); + try std.testing.expect(!c_import.objectMagicOk(&.{ 0xcf, 0xfa, 0xed })); // truncated magic + try std.testing.expect(!c_import.objectMagicOk(&.{})); +} + test "cSourceCacheKey: triple and sysroot vary the key; absent is not empty" { const other_triple = c_import.cSourceCacheKey(SRC, &.{HDR}, &.{"A=1"}, &.{"-O2"}, &.{"inc"}, VER, "x86_64-apple-darwin", "/sdk"); try std.testing.expect(baseKey() != other_triple);