mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
LibC: Use 64-bit stack smash value for 64-bit mode
Otherwise it'll use the first 32 bits that happen to come after, leading to very weird bugs. Fixes #8601
This commit is contained in:
parent
205c8a12ed
commit
a5a62f99c5
Notes:
sideshowbarker
2024-07-18 08:53:50 +09:00
Author: https://github.com/dascandy Commit: https://github.com/SerenityOS/serenity/commit/a5a62f99c54 Pull-request: https://github.com/SerenityOS/serenity/pull/8821 Issue: https://github.com/SerenityOS/serenity/issues/8601 Reviewed-by: https://github.com/gunnarbeutner ✅
3 changed files with 7 additions and 7 deletions
|
@ -64,8 +64,8 @@ extern ctor_func_t end_heap_ctors;
|
|||
extern ctor_func_t start_ctors;
|
||||
extern ctor_func_t end_ctors;
|
||||
|
||||
extern u32 __stack_chk_guard;
|
||||
u32 __stack_chk_guard;
|
||||
extern size_t __stack_chk_guard;
|
||||
size_t __stack_chk_guard;
|
||||
|
||||
extern "C" u8* start_of_safemem_text;
|
||||
extern "C" u8* end_of_safemem_text;
|
||||
|
@ -147,7 +147,7 @@ extern "C" [[noreturn]] UNMAP_AFTER_INIT void init()
|
|||
// Initialize TimeManagement before using randomness!
|
||||
TimeManagement::initialize(0);
|
||||
|
||||
__stack_chk_guard = get_fast_random<u32>();
|
||||
__stack_chk_guard = get_fast_random<size_t>();
|
||||
|
||||
ProcFSComponentRegistry::initialize();
|
||||
Thread::initialize();
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#ifndef _DYNAMIC_LOADER
|
||||
extern "C" {
|
||||
|
||||
extern u32 __stack_chk_guard;
|
||||
extern size_t __stack_chk_guard;
|
||||
|
||||
int main(int, char**, char**);
|
||||
|
||||
|
@ -31,7 +31,7 @@ NAKED void _start(int, char**, char**)
|
|||
|
||||
int _entry(int argc, char** argv, char** env)
|
||||
{
|
||||
u32 original_stack_chk = __stack_chk_guard;
|
||||
size_t original_stack_chk = __stack_chk_guard;
|
||||
arc4random_buf(&__stack_chk_guard, sizeof(__stack_chk_guard));
|
||||
|
||||
if (__stack_chk_guard == 0)
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
|
||||
extern "C" {
|
||||
|
||||
extern u32 __stack_chk_guard;
|
||||
u32 __stack_chk_guard = (u32)0xc6c7c8c9;
|
||||
extern size_t __stack_chk_guard;
|
||||
size_t __stack_chk_guard = (size_t)0xc6c7c8c9;
|
||||
|
||||
__attribute__((noreturn)) void __stack_chk_fail()
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue