aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/CodeSignature.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2020-11-20 17:26:39 +0100
committerJakub Konka <kubkon@jakubkonka.com>2020-11-26 11:50:09 +0100
commitcd79c6dda1457ae9bf69fe900852209e31c28406 (patch)
tree09e8152b23f78572928f9536939a90ea9b73cfca /src/link/MachO/CodeSignature.zig
parenta6e93da717334b6ee354d162107e00080807ce7c (diff)
downloadzig-cd79c6dda1457ae9bf69fe900852209e31c28406.tar.gz
zig-cd79c6dda1457ae9bf69fe900852209e31c28406.zip
stage2 macho: fix issues with codesigning
Diffstat (limited to 'src/link/MachO/CodeSignature.zig')
-rw-r--r--src/link/MachO/CodeSignature.zig6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/link/MachO/CodeSignature.zig b/src/link/MachO/CodeSignature.zig
index 813993d02c..72e49bb976 100644
--- a/src/link/MachO/CodeSignature.zig
+++ b/src/link/MachO/CodeSignature.zig
@@ -69,11 +69,12 @@ pub fn calcAdhocSignature(self: *CodeSignature, bin_file: *const MachO) !void {
const text_segment = bin_file.load_commands.items[bin_file.text_segment_cmd_index.?].Segment;
const data_segment = bin_file.load_commands.items[bin_file.data_segment_cmd_index.?].Segment;
const linkedit_segment = bin_file.load_commands.items[bin_file.linkedit_segment_cmd_index.?].Segment;
- const symtab = bin_file.load_commands.items[bin_file.symtab_cmd_index.?].Symtab;
+ const code_sig_cmd = bin_file.load_commands.items[bin_file.code_signature_cmd_index.?].LinkeditData;
const execSegBase: u64 = text_segment.fileoff;
const execSegLimit: u64 = text_segment.filesize;
const execSegFlags: u64 = if (bin_file.base.options.output_mode == .Exe) macho.CS_EXECSEG_MAIN_BINARY else 0;
+ const file_size = code_sig_cmd.dataoff;
var cdir = CodeDirectory{
.inner = .{
.magic = macho.CSMAGIC_CODEDIRECTORY,
@@ -84,7 +85,7 @@ pub fn calcAdhocSignature(self: *CodeSignature, bin_file: *const MachO) !void {
.identOffset = 0,
.nSpecialSlots = 0,
.nCodeSlots = 0,
- .codeLimit = 0,
+ .codeLimit = @intCast(u32, file_size),
.hashSize = hash_size,
.hashType = macho.CS_HASHTYPE_SHA256,
.platform = 0,
@@ -100,7 +101,6 @@ pub fn calcAdhocSignature(self: *CodeSignature, bin_file: *const MachO) !void {
},
};
- const file_size = symtab.stroff + symtab.strsize;
const total_pages = mem.alignForward(file_size, page_size) / page_size;
log.debug("Total file size: {}; total number of pages: {}\n", .{ file_size, total_pages });