aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2024-04-17 14:56:20 -0700
committerAndrew Waterman <andrew@sifive.com>2024-04-17 14:56:20 -0700
commit1f326d6ed85e8d19478d19a46395c9c6f04f40d7 (patch)
tree6699d242f9cbb90dfc76bb70e947d0c9e2d7de00
parent9637e60b96b21a7f85a85bf033b87f64fb823b6c (diff)
downloadpk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.zip
pk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.tar.gz
pk-1f326d6ed85e8d19478d19a46395c9c6f04f40d7.tar.bz2
Add ELF header sanity check
-rw-r--r--pk/elf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/pk/elf.c b/pk/elf.c
index abc78e1..ad52bf6 100644
--- a/pk/elf.c
+++ b/pk/elf.c
@@ -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)