aboutsummaryrefslogtreecommitdiff
path: root/kernel/features/load.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/features/load.c')
-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++) {