summaryrefslogtreecommitdiff
path: root/libk
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-06-21 23:32:18 -0500
committerDanny Holman <dholman@gymli.org>2024-06-21 23:32:18 -0500
commit0e8081d8e9db8b9482da7e92a72194bfa927223d (patch)
treea8250c2071b1af527d896b718827ff7081cb5b56 /libk
parent2f224cdeadc380037cb74c10fc65d17aac05b730 (diff)
libk: use a random value for the stack protector
Don't hardcode the __stack_chk_guard value, generate a random value (using RDRAND on x86) before running any C code. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to 'libk')
-rw-r--r--libk/stack_protector.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/libk/stack_protector.c b/libk/stack_protector.c
index 78d0302..a929ae0 100644
--- a/libk/stack_protector.c
+++ b/libk/stack_protector.c
@@ -1,11 +1,9 @@
#include <kernel/panic.h>
#include <stdint.h>
-#include <stddef.h>
-#define STACK_CHK_GUARD 0x32E3429E
-
-uintptr_t __stack_chk_guard = STACK_CHK_GUARD;
+uintptr_t __stack_chk_guard;
__attribute__((noreturn)) void __stack_chk_fail(void) {
- panic("STACK SMASHING IN KERNEL ADDRESS SPACE");
+ panic("Detected attempted stack manipulation in kernel");
+ while(1);
}