Skip to content

Commit d116a59

Browse files
committed
Revert "Read System.keychain as well as SystemRootCertificates.keychain for MacOS CA Bundle"
This reverts commit b3a1101. Closes ziglang#22870.
1 parent b732070 commit d116a59

File tree

1 file changed

+37
-44
lines changed

1 file changed

+37
-44
lines changed

lib/std/crypto/Certificate/Bundle/macos.zig

Lines changed: 37 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,68 +11,61 @@ pub fn rescanMac(cb: *Bundle, gpa: Allocator) RescanMacError!void {
1111
cb.bytes.clearRetainingCapacity();
1212
cb.map.clearRetainingCapacity();
1313

14-
const keychainPaths = [2][]const u8{
15-
"/System/Library/Keychains/SystemRootCertificates.keychain",
16-
"/Library/Keychains/System.keychain",
17-
};
14+
const file = try fs.openFileAbsolute("/System/Library/Keychains/SystemRootCertificates.keychain", .{});
15+
defer file.close();
1816

19-
for (keychainPaths) |keychainPath| {
20-
const file = try fs.openFileAbsolute(keychainPath, .{});
21-
defer file.close();
17+
const bytes = try file.readToEndAlloc(gpa, std.math.maxInt(u32));
18+
defer gpa.free(bytes);
2219

23-
const bytes = try file.readToEndAlloc(gpa, std.math.maxInt(u32));
24-
defer gpa.free(bytes);
20+
var stream = std.io.fixedBufferStream(bytes);
21+
const reader = stream.reader();
2522

26-
var stream = std.io.fixedBufferStream(bytes);
27-
const reader = stream.reader();
23+
const db_header = try reader.readStructEndian(ApplDbHeader, .big);
24+
assert(mem.eql(u8, &db_header.signature, "kych"));
2825

29-
const db_header = try reader.readStructEndian(ApplDbHeader, .big);
30-
assert(mem.eql(u8, &db_header.signature, "kych"));
26+
try stream.seekTo(db_header.schema_offset);
3127

32-
try stream.seekTo(db_header.schema_offset);
28+
const db_schema = try reader.readStructEndian(ApplDbSchema, .big);
3329

34-
const db_schema = try reader.readStructEndian(ApplDbSchema, .big);
30+
var table_list = try gpa.alloc(u32, db_schema.table_count);
31+
defer gpa.free(table_list);
3532

36-
var table_list = try gpa.alloc(u32, db_schema.table_count);
37-
defer gpa.free(table_list);
38-
39-
var table_idx: u32 = 0;
40-
while (table_idx < table_list.len) : (table_idx += 1) {
41-
table_list[table_idx] = try reader.readInt(u32, .big);
42-
}
33+
var table_idx: u32 = 0;
34+
while (table_idx < table_list.len) : (table_idx += 1) {
35+
table_list[table_idx] = try reader.readInt(u32, .big);
36+
}
4337

44-
const now_sec = std.time.timestamp();
38+
const now_sec = std.time.timestamp();
4539

46-
for (table_list) |table_offset| {
47-
try stream.seekTo(db_header.schema_offset + table_offset);
40+
for (table_list) |table_offset| {
41+
try stream.seekTo(db_header.schema_offset + table_offset);
4842

49-
const table_header = try reader.readStructEndian(TableHeader, .big);
43+
const table_header = try reader.readStructEndian(TableHeader, .big);
5044

51-
if (@as(std.c.DB_RECORDTYPE, @enumFromInt(table_header.table_id)) != .X509_CERTIFICATE) {
52-
continue;
53-
}
45+
if (@as(std.c.DB_RECORDTYPE, @enumFromInt(table_header.table_id)) != .X509_CERTIFICATE) {
46+
continue;
47+
}
5448

55-
var record_list = try gpa.alloc(u32, table_header.record_count);
56-
defer gpa.free(record_list);
49+
var record_list = try gpa.alloc(u32, table_header.record_count);
50+
defer gpa.free(record_list);
5751

58-
var record_idx: u32 = 0;
59-
while (record_idx < record_list.len) : (record_idx += 1) {
60-
record_list[record_idx] = try reader.readInt(u32, .big);
61-
}
52+
var record_idx: u32 = 0;
53+
while (record_idx < record_list.len) : (record_idx += 1) {
54+
record_list[record_idx] = try reader.readInt(u32, .big);
55+
}
6256

63-
for (record_list) |record_offset| {
64-
try stream.seekTo(db_header.schema_offset + table_offset + record_offset);
57+
for (record_list) |record_offset| {
58+
try stream.seekTo(db_header.schema_offset + table_offset + record_offset);
6559

66-
const cert_header = try reader.readStructEndian(X509CertHeader, .big);
60+
const cert_header = try reader.readStructEndian(X509CertHeader, .big);
6761

68-
try cb.bytes.ensureUnusedCapacity(gpa, cert_header.cert_size);
62+
try cb.bytes.ensureUnusedCapacity(gpa, cert_header.cert_size);
6963

70-
const cert_start = @as(u32, @intCast(cb.bytes.items.len));
71-
const dest_buf = cb.bytes.allocatedSlice()[cert_start..];
72-
cb.bytes.items.len += try reader.readAtLeast(dest_buf, cert_header.cert_size);
64+
const cert_start = @as(u32, @intCast(cb.bytes.items.len));
65+
const dest_buf = cb.bytes.allocatedSlice()[cert_start..];
66+
cb.bytes.items.len += try reader.readAtLeast(dest_buf, cert_header.cert_size);
7367

74-
try cb.parseCert(gpa, cert_start, now_sec);
75-
}
68+
try cb.parseCert(gpa, cert_start, now_sec);
7669
}
7770
}
7871

0 commit comments

Comments
 (0)