Commit e349bb2b66

Jakub Konka <kubkon@jakubkonka.com>
2023-12-05 14:27:03
elf: upcast e_shnum to u64 to check for valid ranges
1 parent b294103
Changed files (2)
src/link/Elf/Object.zig
@@ -68,7 +68,7 @@ pub fn parse(self: *Object, elf_file: *Elf) !void {
     const gpa = elf_file.base.allocator;
 
     if (self.data.len < self.header.?.e_shoff or
-        self.data.len < self.header.?.e_shoff + self.header.?.e_shnum * @sizeOf(elf.Elf64_Shdr))
+        self.data.len < self.header.?.e_shoff + @as(u64, @intCast(self.header.?.e_shnum)) * @sizeOf(elf.Elf64_Shdr))
     {
         try elf_file.reportParseError2(
             self.index,
src/link/Elf/SharedObject.zig
@@ -63,7 +63,7 @@ pub fn parse(self: *SharedObject, elf_file: *Elf) !void {
     }
 
     if (self.data.len < self.header.?.e_shoff or
-        self.data.len < self.header.?.e_shoff + self.header.?.e_shnum * @sizeOf(elf.Elf64_Shdr))
+        self.data.len < self.header.?.e_shoff + @as(u64, @intCast(self.header.?.e_shnum)) * @sizeOf(elf.Elf64_Shdr))
     {
         try elf_file.reportParseError2(
             self.index,