diff options
author | Marvin Borner | 2021-04-05 00:20:13 +0200 |
---|---|---|
committer | Marvin Borner | 2021-04-05 00:20:13 +0200 |
commit | 248c0d2fd007eeeb108ff1a88924e3ef8ff84ba4 (patch) | |
tree | ca7a73c76e423d44e739228ddaa4a408af9ca526 /kernel/features | |
parent | 614df32883bd988a59ce1a2a201ce2dd8211ab3a (diff) |
Made kernel elf-bootable
Diffstat (limited to 'kernel/features')
-rw-r--r-- | kernel/features/load.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/features/load.c b/kernel/features/load.c index 3dff831..d87bb94 100644 --- a/kernel/features/load.c +++ b/kernel/features/load.c @@ -9,8 +9,6 @@ #include <random.h> #include <str.h> -#define PROC_STACK_SIZE 0x4000 - res elf_load(const char *path, struct proc *proc) { if (!memory_valid(path)) @@ -50,8 +48,11 @@ res elf_load(const char *path, struct proc *proc) header.version != 1 || header.machine != ELF_MACHINE_386) return -ENOEXEC; + if (!memory_valid((void *)header.entry)) + return -ENOEXEC; + // ASLR - u32 rand_off = (rand() & 0xffff) * PAGE_SIZE; + u32 rand_off = header.type == ELF_ETYPE_DYN ? (rand() & 0xffff) * PAGE_SIZE : 0; // Loop through programs for (u32 i = 0; i < header.phnum; i++) { |