From 2b749e704037f0cebc6c1924d5feb76ff561ba18 Mon Sep 17 00:00:00 2001 From: Andelf Date: Fri, 15 Nov 2024 14:51:30 +0800 Subject: [PATCH] fix(firmware): support special ELF program header with p_filesz=0 Fix #77 --- src/firmware.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/firmware.rs b/src/firmware.rs index b831626..e489403 100644 --- a/src/firmware.rs +++ b/src/firmware.rs @@ -196,6 +196,11 @@ pub fn read_elf(elf_data: &[u8]) -> Result { let flags = segment.p_flags(endian); + // The number of bytes in the file image of the segment, which can be zero. + if segment.p_filesz(endian) == 0 { + // skip empty segment + continue; + } let segment_data = segment .data(endian, elf_data) .map_err(|_| anyhow::format_err!("Failed to access data for an ELF segment."))?;