diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-08-09 16:55:36 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2016-08-09 16:55:36 -0700 |
commit | 7520a474199df8b9ef7cee32eebcea7577813814 (patch) | |
tree | 7ad7d3f2bad15327d223117c633c05651c5e10dd /pk | |
parent | 55982bd0192a41d76b13ba92b3c1f3ef80f7e029 (diff) | |
download | pk-7520a474199df8b9ef7cee32eebcea7577813814.zip pk-7520a474199df8b9ef7cee32eebcea7577813814.tar.gz pk-7520a474199df8b9ef7cee32eebcea7577813814.tar.bz2 |
Disallow execution of RVC binaries on non-RVC pk
Diffstat (limited to 'pk')
-rw-r--r-- | pk/elf.c | 4 | ||||
-rw-r--r-- | pk/elf.h | 2 |
2 files changed, 6 insertions, 0 deletions
@@ -29,6 +29,10 @@ void load_elf(const char* fn, elf_info* info) assert(IS_ELF32(eh)); #endif +#ifndef __riscv_compressed + assert(!(eh.e_flags & EF_RISCV_RVC)); +#endif + uintptr_t min_vaddr = -1; size_t phdr_size = eh.e_phnum * sizeof(Elf_Phdr); if (phdr_size > info->phdr_size) @@ -23,6 +23,8 @@ #define ET_EXEC 2 #define ET_DYN 3 +#define EF_RISCV_RVC 1 + #define PT_LOAD 1 #define AT_NULL 0 |