Fix parsing vuengine elf files

This commit is contained in:
Simon Gellis 2025-09-02 00:33:31 -04:00
parent 4f681d883e
commit cd8ebab4bf
1 changed files with 4 additions and 3 deletions

View File

@ -86,12 +86,13 @@ fn parse_elf_program<Elf: object::read::elf::FileHeader<Endian = object::Endiann
let mut bytes = vec![];
let mut pstart = None;
for phdr in header.program_headers(endian, data).ok()? {
if phdr.p_filesz(endian).into() == 0 {
let pma = phdr.p_paddr(endian).into();
if pma < 0x07000000 || phdr.p_filesz(endian).into() == 0 {
continue;
}
let start = pstart.unwrap_or(phdr.p_paddr(endian).into());
let start = pstart.unwrap_or(pma);
pstart = Some(start);
bytes.resize((phdr.p_paddr(endian).into() - start) as usize, 0);
bytes.resize((pma - start) as usize, 0);
let data = phdr.data(endian, data).ok()?;
bytes.extend_from_slice(data);
}