| ... | @@ -1487,7 +1487,8 @@ pub fn parseDylib( | ... | @@ -1487,7 +1487,8 @@ pub fn parseDylib( |
| 1487 | var file_size = math.cast(usize, file_stat.size) orelse return error.Overflow; | 1487 | var file_size = math.cast(usize, file_stat.size) orelse return error.Overflow; |
| 1488 | | 1488 | |
| 1489 | const reader = file.reader(); | 1489 | const reader = file.reader(); |
| 1490 | const fat_offset = try fat.getLibraryOffset(reader, cpu_arch); | 1490 | const fat_offset = math.cast(usize, try fat.getLibraryOffset(reader, cpu_arch)) orelse |
| | 1491 | return error.Overflow; |
| 1491 | try file.seekTo(fat_offset); | 1492 | try file.seekTo(fat_offset); |
| 1492 | file_size -= fat_offset; | 1493 | file_size -= fat_offset; |
| 1493 | | 1494 | |
| ... | @@ -5091,7 +5092,7 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void { | ... | @@ -5091,7 +5092,7 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void { |
| 5091 | const needed_size = export_off + export_size - rebase_off; | 5092 | const needed_size = export_off + export_size - rebase_off; |
| 5092 | link_seg.filesize = needed_size; | 5093 | link_seg.filesize = needed_size; |
| 5093 | | 5094 | |
| 5094 | var buffer = try gpa.alloc(u8, needed_size); | 5095 | var buffer = try gpa.alloc(u8, math.cast(usize, needed_size) orelse return error.Overflow); |
| 5095 | defer gpa.free(buffer); | 5096 | defer gpa.free(buffer); |
| 5096 | mem.set(u8, buffer, 0); | 5097 | mem.set(u8, buffer, 0); |
| 5097 | | 5098 | |
| ... | @@ -5115,7 +5116,9 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void { | ... | @@ -5115,7 +5116,9 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void { |
| 5115 | }); | 5116 | }); |
| 5116 | | 5117 | |
| 5117 | try self.base.file.?.pwriteAll(buffer, rebase_off); | 5118 | try self.base.file.?.pwriteAll(buffer, rebase_off); |
| 5118 | try self.populateLazyBindOffsetsInStubHelper(buffer[lazy_bind_off - rebase_off ..][0..lazy_bind_size]); | 5119 | const start = math.cast(usize, lazy_bind_off - rebase_off) orelse return error.Overflow; |
| | 5120 | const end = start + (math.cast(usize, lazy_bind_size) orelse return error.Overflow); |
| | 5121 | try self.populateLazyBindOffsetsInStubHelper(buffer[start..end]); |
| 5119 | | 5122 | |
| 5120 | try lc_writer.writeStruct(macho.dyld_info_command{ | 5123 | try lc_writer.writeStruct(macho.dyld_info_command{ |
| 5121 | .cmd = .DYLD_INFO_ONLY, | 5124 | .cmd = .DYLD_INFO_ONLY, |