authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-13 12:55:01-04:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2026-06-23 00:27:17-04:00
logb981b7975dad40e4e779f848530bf80e54b7cde4
treed36421c4457e0a935dfff01b5098f96b95d74bf0
parent09b51b3dc1a5d6ea73637513efd39be313f8301e

Coff: fixup overflow in relocation bounds check


1 files changed, 2 insertions(+), 2 deletions(-)

src/link/Coff.zig+2-2
...@@ -4055,14 +4055,14 @@ fn loadObject(...@@ -4055,14 +4055,14 @@ fn loadObject(
4055 section.name = coff.getOrPutStringAssumeCapacity(section_name_slice);4055 section.name = coff.getOrPutStringAssumeCapacity(section_name_slice);
40564056
4057 if (section.header.pointer_to_linenumbers +4057 if (section.header.pointer_to_linenumbers +
4058 section.header.number_of_linenumbers * std.coff.LineNumber.sizeOf() > fl.size)4058 @as(u32, section.header.number_of_linenumbers) * std.coff.LineNumber.sizeOf() > fl.size)
4059 return diags.failParse(path, "bad line numbers location in section {d} `{s}`", .{4059 return diags.failParse(path, "bad line numbers location in section {d} `{s}`", .{
4060 section_i,4060 section_i,
4061 section_name_slice,4061 section_name_slice,
4062 });4062 });
40634063
4064 if (section.header.pointer_to_relocations +4064 if (section.header.pointer_to_relocations +
4065 section.header.number_of_relocations * std.coff.Relocation.sizeOf() > fl.size)4065 @as(u32, section.header.number_of_relocations) * std.coff.Relocation.sizeOf() > fl.size)
4066 return diags.failParse(path, "bad relocations location in section {d} `{s}`", .{4066 return diags.failParse(path, "bad relocations location in section {d} `{s}`", .{
4067 section_i,4067 section_i,
4068 section_name_slice,4068 section_name_slice,