summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorCraig Small <csmall@enc.com.au>2016-04-25 17:07:22 +1000
committerCraig Small <csmall@enc.com.au>2016-04-25 17:07:22 +1000
commit9c877bf636401faec1df5934eb69a3775077be4d (patch)
tree5d0953805a2ae072261d00bb561297f1c4018a10 /configure.ac
parent1e6452fe65706da3bf23d13f469e348d4f8519d3 (diff)
downloadprocps-ng-9c877bf636401faec1df5934eb69a3775077be4d.tar.gz
build-sys: Enable optional hardening flags
With the configure option --enable-harden-flags the CFLAGS and LDFLAGS are manipulated to provide some hardening protection to the binaries. psmisc uses these flags on by default with no troubles, however it doesn't have a library in it either. References: https://wiki.debian.org/Hardening
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac23
1 files changed, 23 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 32d0f72..7190650 100644
--- a/configure.ac
+++ b/configure.ac
@@ -116,6 +116,29 @@ if test "$enable_libselinux" = "yes"; then
AC_DEFINE([ENABLE_LIBSELINUX], [1], [Enable libselinux])
fi
+# Enable hardened compile and link flags
+AC_ARG_ENABLE([harden_flags],
+ [AS_HELP_STRING([--enable-harden-flags], [enable hardened compilier and linker flags])],
+ [enable_harden_flags=$enableval],
+ [enable_harden_flags="no"])
+
+# Check that harden CFLAGS and LDFLAGS will compile
+AS_IF([test "$enable_harden_flags" = "yes"],
+ HARDEN_CFLAGS="-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security"
+ [HARDEN_LDFLAGS="-fPIE -pie -Wl,-z,relro -Wl,-z,now"]
+ [ AC_MSG_CHECKING([compiler supports harden flags])
+ save_harden_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $HARDEN_CFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,,)],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no]); HARDEN_CFLAGS='']
+ )
+ CFLAGS="$save_harden_cflags"],
+ [HARDEN_CFLAGS=""
+ HARDEN_LDFLAGS=""])
+AC_SUBST([HARDEN_CFLAGS])
+AC_SUBST([HARDEN_LDFLAGS])
+
# Optional packages - AC_ARG_WITH
AC_ARG_WITH([ncurses],
AS_HELP_STRING([--without-ncurses], [build only applications not needing ncurses]),