diff options
author | Michael Schuster <michael@schuster.ms> | 2020-08-01 00:51:28 +0300 |
---|---|---|
committer | Kevin Ottens <ervin@ipsquad.net> | 2020-08-03 11:11:33 +0300 |
commit | e02be629bbdd80c84ebf5c21f0b4d2d24504980a (patch) | |
tree | 2986ae500c0c65e793564357c1cd04272b5cbbb3 /src/CMakeLists.txt | |
parent | bc5888e8e436f0e5e89048b430ba2f42f19ad0ad (diff) |
Windows: Enable CFG and SafeSEH linker security flags
See:
https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard
https://docs.microsoft.com/en-us/cpp/build/reference/safeseh-image-has-safe-exception-handlers
Signed-off-by: Michael Schuster <michael@schuster.ms>
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r-- | src/CMakeLists.txt | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c74c66535..a79edfcfb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -34,9 +34,15 @@ if(NOT MSVC) endif() if(WIN32) - # Enable DEP & ASLR - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nxcompat /dynamicbase") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /nxcompat /dynamicbase") + # Enable DEP, ASLR and CFG + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /nxcompat /dynamicbase /guard:cf") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /nxcompat /dynamicbase /guard:cf") + + # x86 only: Enable SafeSEH + if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /safeseh") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /safeseh") + endif() elseif(UNIX AND NOT APPLE) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,relro -Wl,-z,now") |