elf: upcast e_shnum to u64 to check for valid ranges

This commit is contained in:
Jakub Konka 2023-12-05 14:27:03 +01:00
parent b294103c7e
commit e349bb2b66
2 changed files with 2 additions and 2 deletions

View File

@ -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,

View File

@ -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,