mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 10:37:45 +00:00
Build + LibC: Enable -fstack-protector-strong in user space
Modify the user mode runtime to insert stack canaries to find stack corruptions. The `-fstack-protector-strong` variant was chosen because it catches more issues than vanilla `-fstack-protector`, but doesn't have substantial performance impact like `-fstack-protector-all`. Details: -fstack-protector enables stack protection for vulnerable functions that contain: * A character array larger than 8 bytes. * An 8-bit integer array larger than 8 bytes. * A call to alloca() with either a variable size or a constant size bigger than 8 bytes. -fstack-protector-strong enables stack protection for vulnerable functions that contain: * An array of any size and type. * A call to alloca(). * A local variable that has its address taken. Example of it catching corrupting in the `stack-smash` test: ``` courage ~ $ ./user/Tests/LibC/stack-smash [+] Starting the stack smash ... Error: Stack protector failure, stack smashing detected! Shell: Job 1 (/usr/Tests/LibC/stack-smash) Aborted ```
This commit is contained in:
parent
bf3772362a
commit
06da50afc7
7 changed files with 124 additions and 13 deletions
|
@ -125,9 +125,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
|
|||
set(CMAKE_SKIP_RPATH TRUE)
|
||||
endif()
|
||||
|
||||
#FIXME: -fstack-protector
|
||||
|
||||
add_compile_options(-Os -g1 -fno-exceptions -Wno-address-of-packed-member -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough -Wno-nonnull-compare -Wno-deprecated-copy -Wno-expansion-to-defined)
|
||||
add_compile_options(-Os -g1 -fno-exceptions -fstack-protector-strong -Wno-address-of-packed-member -Wundef -Wcast-qual -Wwrite-strings -Wimplicit-fallthrough -Wno-nonnull-compare -Wno-deprecated-copy -Wno-expansion-to-defined)
|
||||
add_compile_options(-ffile-prefix-map=${CMAKE_SOURCE_DIR}=.)
|
||||
|
||||
add_compile_definitions(DEBUG SANITIZE_PTRS)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue