authorgravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-01-14 22:21:30+00:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-01-15 05:27:54+01:00
log9097bcc06e8d9c4691fac18f7a6b4d7f2d63eefe
treed5bdcb0a9957ef892a71f087c78226c8ec4cbd8f
parentf0bac8037ca373be4796fcedeb4b40bc40a5e846

add `SHT_NOBITS` check


1 files changed, 5 insertions(+), 3 deletions(-)

src/link/Elf/SharedObject.zig+5-3
...@@ -84,9 +84,11 @@ pub fn parse(self: *SharedObject, elf_file: *Elf) !void {...@@ -84,9 +84,11 @@ pub fn parse(self: *SharedObject, elf_file: *Elf) !void {
84 try self.shdrs.ensureTotalCapacityPrecise(gpa, shdrs.len);84 try self.shdrs.ensureTotalCapacityPrecise(gpa, shdrs.len);
8585
86 for (shdrs, 0..) |shdr, i| {86 for (shdrs, 0..) |shdr, i| {
87 if (self.data.len < shdr.sh_offset or self.data.len < shdr.sh_offset + shdr.sh_size) {87 if (shdr.sh_type != elf.SHT_NOBITS) {
88 try elf_file.reportParseError2(self.index, "corrupted section header", .{});88 if (self.data.len < shdr.sh_offset or self.data.len < shdr.sh_offset + shdr.sh_size) {
89 return error.MalformedObject;89 try elf_file.reportParseError2(self.index, "corrupted section header", .{});
90 return error.MalformedObject;
91 }
90 }92 }
91 self.shdrs.appendAssumeCapacity(try ElfShdr.fromElf64Shdr(shdr));93 self.shdrs.appendAssumeCapacity(try ElfShdr.fromElf64Shdr(shdr));
92 switch (shdr.sh_type) {94 switch (shdr.sh_type) {