diff options
| author | Brent Cook <bcook@openbsd.org> | 2015-02-24 19:39:16 -0600 |
|---|---|---|
| committer | Brent Cook <bcook@openbsd.org> | 2015-02-24 19:39:16 -0600 |
| commit | ab0d3e54a221b8959582459bbd1ff6fd2f08f9f0 (patch) | |
| tree | 9f1b317fa75f852e65d63e3c880418deca1e876b | |
| parent | 347c03d3a02e63775ec6b0c3aa94aef2b41f599d (diff) | |
| download | portable-ab0d3e54a221b8959582459bbd1ff6fd2f08f9f0.tar.gz portable-ab0d3e54a221b8959582459bbd1ff6fd2f08f9f0.tar.bz2 portable-ab0d3e54a221b8959582459bbd1ff6fd2f08f9f0.zip | |
add windows-specific hardening options
This enables DEP and ALSR capabilities. Stack protection is enabled
optionally, there are some extra linking steps required that make it
difficult to enable by default.
| -rw-r--r-- | configure.ac | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/configure.ac b/configure.ac index 9212fb7..81433c8 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -104,6 +104,11 @@ AC_ARG_ENABLE([hardening], | |||
| 104 | [Disable options to frustrate memory corruption exploits])], | 104 | [Disable options to frustrate memory corruption exploits])], |
| 105 | [], [enable_hardening=yes]) | 105 | [], [enable_hardening=yes]) |
| 106 | 106 | ||
| 107 | AC_ARG_ENABLE([windows-ssp], | ||
| 108 | [AS_HELP_STRING([--enable-windows-ssp], | ||
| 109 | [Enable building the stack smashing protection on | ||
| 110 | Windows. This currently distributing libssp-0.dll.])]) | ||
| 111 | |||
| 107 | AC_DEFUN([CHECK_CFLAG], [ | 112 | AC_DEFUN([CHECK_CFLAG], [ |
| 108 | AC_LANG_ASSERT(C) | 113 | AC_LANG_ASSERT(C) |
| 109 | AC_MSG_CHECKING([if $saved_CC supports "$1"]) | 114 | AC_MSG_CHECKING([if $saved_CC supports "$1"]) |
| @@ -148,16 +153,26 @@ AS_IF([test "x$enable_hardening" = "xyes"], [ | |||
| 148 | # Enable read only relocations | 153 | # Enable read only relocations |
| 149 | CHECK_LDFLAG([[-Wl,-z,relro]]) | 154 | CHECK_LDFLAG([[-Wl,-z,relro]]) |
| 150 | CHECK_LDFLAG([[-Wl,-z,now]]) | 155 | CHECK_LDFLAG([[-Wl,-z,now]]) |
| 151 | ]) | ||
| 152 | 156 | ||
| 153 | # Use stack-protector-strong if available; if not, fallback to | 157 | # Windows security flags |
| 154 | # stack-protector-all which is considered to be overkill | 158 | AS_IF([test "x$HOST_OS" = "xwin"], [ |
| 155 | AS_IF([test "x$enable_hardening" = "xyes" -a "x$HOST_OS" != "xwin"], [ | 159 | CHECK_LDFLAG([[-Wl,--nxcompat]]) |
| 156 | CHECK_CFLAG([[-fstack-protector-strong]], | 160 | CHECK_LDFLAG([[-Wl,--dynamicbase]]) |
| 157 | CHECK_CFLAG([[-fstack-protector-all]], | 161 | CHECK_LDFLAG([[-Wl,--high-entropy-va]]) |
| 158 | AC_MSG_WARN([compiler does not appear to support stack protection]) | 162 | ]) |
| 163 | |||
| 164 | # Use stack-protector-strong if available; if not, fallback to | ||
| 165 | # stack-protector-all which is considered to be overkill | ||
| 166 | AS_IF([test "x$enable_windows_ssp" = "xyes" -o "x$HOST_OS" != "xwin"], [ | ||
| 167 | CHECK_CFLAG([[-fstack-protector-strong]], | ||
| 168 | CHECK_CFLAG([[-fstack-protector-all]], | ||
| 169 | AC_MSG_WARN([compiler does not appear to support stack protection]) | ||
| 170 | ) | ||
| 159 | ) | 171 | ) |
| 160 | ) | 172 | AS_IF([test "x$HOST_OS" = "xwin"], [ |
| 173 | AC_SEARCH_LIBS([__stack_chk_guard],[ssp]) | ||
| 174 | ]) | ||
| 175 | ]) | ||
| 161 | ]) | 176 | ]) |
| 162 | 177 | ||
| 163 | 178 | ||
