diff options
author | Andrew Waterman <andrew@sifive.com> | 2024-04-17 14:56:20 -0700 |
---|---|---|
committer | Andrew Waterman <andrew@sifive.com> | 2024-04-17 14:56:20 -0700 |
commit | 1f326d6ed85e8d19478d19a46395c9c6f04f40d7 (patch) | |
tree | 6699d242f9cbb90dfc76bb70e947d0c9e2d7de00 /pk/elf.c | |
parent | 9637e60b96b21a7f85a85bf033b87f64fb823b6c (diff) | |
download | pk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.zip pk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.tar.gz pk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.tar.bz2 |
Add ELF header sanity check
Diffstat (limited to 'pk/elf.c')
-rw-r--r-- | pk/elf.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -76,6 +76,8 @@ void load_elf(const char* fn, elf_info* info) panic("not a statically linked ELF program"); } if(ph[i].p_type == PT_LOAD && ph[i].p_memsz) { + if (ph[i].p_filesz > ph[i].p_memsz) + goto fail; uintptr_t prepad = ph[i].p_vaddr % RISCV_PGSIZE; uintptr_t vaddr = ph[i].p_vaddr + bias; if (vaddr + ph[i].p_memsz > info->brk_min) |