@@ -11,68 +11,61 @@ pub fn rescanMac(cb: *Bundle, gpa: Allocator) RescanMacError!void {
11
11
cb .bytes .clearRetainingCapacity ();
12
12
cb .map .clearRetainingCapacity ();
13
13
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 ();
18
16
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 );
22
19
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 ( );
25
22
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" ) );
28
25
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 );
31
27
32
- try stream . seekTo ( db_header . schema_offset );
28
+ const db_schema = try reader . readStructEndian ( ApplDbSchema , .big );
33
29
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 );
35
32
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
+ }
43
37
44
- const now_sec = std .time .timestamp ();
38
+ const now_sec = std .time .timestamp ();
45
39
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 );
48
42
49
- const table_header = try reader .readStructEndian (TableHeader , .big );
43
+ const table_header = try reader .readStructEndian (TableHeader , .big );
50
44
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
+ }
54
48
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 );
57
51
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
+ }
62
56
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 );
65
59
66
- const cert_header = try reader .readStructEndian (X509CertHeader , .big );
60
+ const cert_header = try reader .readStructEndian (X509CertHeader , .big );
67
61
68
- try cb .bytes .ensureUnusedCapacity (gpa , cert_header .cert_size );
62
+ try cb .bytes .ensureUnusedCapacity (gpa , cert_header .cert_size );
69
63
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 );
73
67
74
- try cb .parseCert (gpa , cert_start , now_sec );
75
- }
68
+ try cb .parseCert (gpa , cert_start , now_sec );
76
69
}
77
70
}
78
71
0 commit comments