diff options
author | Danny Holman <dholman@gymli.org> | 2024-06-21 23:32:18 -0500 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2024-06-21 23:32:18 -0500 |
commit | 0e8081d8e9db8b9482da7e92a72194bfa927223d (patch) | |
tree | a8250c2071b1af527d896b718827ff7081cb5b56 /libk | |
parent | 2f224cdeadc380037cb74c10fc65d17aac05b730 (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.c | 8 |
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); } |