diff --git a/Kernel/StdLib.cpp b/Kernel/StdLib.cpp index 8407882089..bbc4a8b347 100644 --- a/Kernel/StdLib.cpp +++ b/Kernel/StdLib.cpp @@ -213,9 +213,6 @@ void free(void* p) return kfree(p); } -extern u32 __stack_chk_guard; -u32 __stack_chk_guard = (u32)0xc0000c13; - [[noreturn]] void __stack_chk_fail() { ASSERT_NOT_REACHED(); diff --git a/Kernel/init.cpp b/Kernel/init.cpp index b01d496abe..b7df3d8691 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -219,6 +220,9 @@ extern "C" int __cxa_atexit(void (*)(void*), void*, void*) return 0; } +extern u32 __stack_chk_guard; +u32 __stack_chk_guard; + extern "C" [[noreturn]] void init(u32 physical_address_for_kernel_page_tables) { // this is only used one time, directly below here. we can't use this part @@ -313,6 +317,8 @@ extern "C" [[noreturn]] void init(u32 physical_address_for_kernel_page_tables) kprintf("x86: No RDRAND support detected. Randomness will be shitty\n"); } + __stack_chk_guard = get_good_random(); + RTC::initialize(); PIC::initialize(); gdt_init();