Skip to content

Commit 3ee4252

Browse files
GiuseppeCesaranoandrewrk
authored andcommitted
Fix: std.elf offset computation
1 parent 1ba6838 commit 3ee4252

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

lib/std/elf.zig

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -584,7 +584,8 @@ pub const ProgramHeaderIterator = struct {
584584
if (it.index >= it.elf_header.phnum) return null;
585585
defer it.index += 1;
586586

587-
const offset = it.elf_header.phoff + if (it.elf_header.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr) * it.index;
587+
const size: u64 = if (it.elf_header.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr);
588+
const offset = it.elf_header.phoff + size * it.index;
588589
try it.file_reader.seekTo(offset);
589590

590591
return takePhdr(&it.file_reader.interface, it.elf_header);
@@ -600,7 +601,8 @@ pub const ProgramHeaderBufferIterator = struct {
600601
if (it.index >= it.elf_header.phnum) return null;
601602
defer it.index += 1;
602603

603-
const offset = it.elf_header.phoff + if (it.elf_header.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr) * it.index;
604+
const size: u64 = if (it.elf_header.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr);
605+
const offset = it.elf_header.phoff + size * it.index;
604606
var reader = std.Io.Reader.fixed(it.buf[offset..]);
605607

606608
return takePhdr(&reader, it.elf_header);
@@ -635,7 +637,8 @@ pub const SectionHeaderIterator = struct {
635637
if (it.index >= it.elf_header.shnum) return null;
636638
defer it.index += 1;
637639

638-
const offset = it.elf_header.shoff + if (it.elf_header.is_64) @sizeOf(Elf64_Shdr) else @sizeOf(Elf32_Shdr) * it.index;
640+
const size: u64 = if (it.elf_header.is_64) @sizeOf(Elf64_Shdr) else @sizeOf(Elf32_Shdr);
641+
const offset = it.elf_header.shoff + size * it.index;
639642
try it.file_reader.seekTo(offset);
640643

641644
return takeShdr(&it.file_reader.interface, it.elf_header);
@@ -651,7 +654,8 @@ pub const SectionHeaderBufferIterator = struct {
651654
if (it.index >= it.elf_header.shnum) return null;
652655
defer it.index += 1;
653656

654-
const offset = it.elf_header.shoff + if (it.elf_header.is_64) @sizeOf(Elf64_Shdr) else @sizeOf(Elf32_Shdr) * it.index;
657+
const size: u64 = if (it.elf_header.is_64) @sizeOf(Elf64_Shdr) else @sizeOf(Elf32_Shdr);
658+
const offset = it.elf_header.shoff + size * it.index;
655659
var reader = std.Io.Reader.fixed(it.buf[offset..]);
656660

657661
return takeShdr(&reader, it.elf_header);

0 commit comments

Comments
 (0)