Skip to content

Commit 2c2cece

Browse files
committed
fix(aarch64): Fix parsing foreign endianess elf headers
to_le and to_be specify the endianess of the integer to be interpreted, not the endianess of the host. Signed-off-by: Jens Reidel <[email protected]>
1 parent a7cdcac commit 2c2cece

File tree

1 file changed

+1
-8
lines changed

1 file changed

+1
-8
lines changed

src/arch/aarch64/mod.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,10 @@ pub fn find_kernel() -> &'static [u8] {
8080
panic!("Don't found valid ELF file!");
8181
}
8282

83-
#[cfg(target_endian = "little")]
8483
let file_size = if header.e_ident[EI_DATA] == ELFDATA2LSB {
85-
header.e_shoff + (header.e_shentsize as u64 * header.e_shnum as u64)
84+
header.e_shoff.to_le() + (header.e_shentsize.to_le() as u64 * header.e_shnum.to_be() as u64)
8685
} else {
87-
header.e_shoff.to_le() + (header.e_shentsize.to_le() as u64 * header.e_shnum.to_le() as u64)
88-
};
89-
#[cfg(target_endian = "big")]
90-
let file_size = if header.e_ident[EI_DATA] == ELFDATA2LSB {
9186
header.e_shoff.to_be() + (header.e_shentsize.to_be() as u64 * header.e_shnum.to_be() as u64)
92-
} else {
93-
header.e_shoff + (header.e_shentsize as u64 * header.e_shnum as u64)
9487
};
9588

9689
info!("Found ELF file with size {file_size}");

0 commit comments

Comments
 (0)