aboutsummaryrefslogtreecommitdiff
path: root/kernel/features
diff options
context:
space:
mode:
authorMarvin Borner2021-04-05 00:20:13 +0200
committerMarvin Borner2021-04-05 00:20:13 +0200
commit248c0d2fd007eeeb108ff1a88924e3ef8ff84ba4 (patch)
treeca7a73c76e423d44e739228ddaa4a408af9ca526 /kernel/features
parent614df32883bd988a59ce1a2a201ce2dd8211ab3a (diff)
Made kernel elf-bootable
Diffstat (limited to 'kernel/features')
-rw-r--r--kernel/features/load.c7
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++) {