From 814ef9288f84dce95eacf3643c30ff5f45899488 Mon Sep 17 00:00:00 2001
From: Stephan Bosch <stephan@rename-it.nl>
Date: Thu, 14 Jul 2016 21:50:34 +0200
Subject: [PATCH] Add flags in DOVECOT_BINARY_CFLAGS and DOVECOT_BINARY_LDFLAGS
 to all binaries.

In effect, this adds PIE and RELRO to binaries.
---
 configure.ac                      |  4 ++++
 src/managesieve-login/Makefile.am |  2 ++
 src/managesieve/Makefile.am       |  5 +++--
 src/sieve-tools/Makefile.am       | 12 ++++++++----
 4 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/configure.ac b/configure.ac
index ff4a978e5..3eee5c1e1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,6 +36,10 @@ DC_DOVECOT_MODULEDIR
 LIBDOVECOT_INCLUDE="$LIBDOVECOT_INCLUDE $LIBDOVECOT_STORAGE_INCLUDE"
 CFLAGS="$DOVECOT_CFLAGS -I\$(top_srcdir)"
 LIBS="$DOVECOT_LIBS"
+BINARY_CFLAGS="$DOVECOT_BINARY_CFLAGS"
+BINARY_LDFLAGS="$DOVECOT_BINARY_LDFLAGS"
+AC_SUBST(BINARY_CFLAGS)
+AC_SUBST(BINARY_LDFLAGS)
 AC_SUBST(LIBDOVECOT_INCLUDE)
 
 # Define Sieve documentation install dir
diff --git a/src/managesieve-login/Makefile.am b/src/managesieve-login/Makefile.am
index 7f7c38bc8..3bfbc75a2 100644
--- a/src/managesieve-login/Makefile.am
+++ b/src/managesieve-login/Makefile.am
@@ -24,6 +24,8 @@ libmanagesieve_login_settings_la_CFLAGS = \
 libs = \
 	$(top_builddir)/src/lib-managesieve/libmanagesieve.la
 
+managesieve_login_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+managesieve_login_LDFLAGS = $(BINARY_LDFLAGS)
 managesieve_login_LDADD = $(libs) $(LIBDOVECOT_LOGIN) $(LIBDOVECOT)
 managesieve_login_DEPENDENCIES = $(libs) $(LIBDOVECOT_LOGIN_DEPS) $(LIBDOVECOT_DEPS)
 
diff --git a/src/managesieve/Makefile.am b/src/managesieve/Makefile.am
index 8a87b03a5..17b579036 100644
--- a/src/managesieve/Makefile.am
+++ b/src/managesieve/Makefile.am
@@ -18,13 +18,14 @@ settings_LTLIBRARIES = \
 libmanagesieve_settings_la_SOURCES = \
 	managesieve-settings.c
 
-managesieve_LDFLAGS = -export-dynamic
-
 libs = \
 	managesieve-settings.lo \
 	$(top_builddir)/src/lib-managesieve/libmanagesieve.la \
 	$(top_builddir)/src/lib-sieve/libdovecot-sieve.la
 
+managesieve_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+managesieve_LDFLAGS = -export-dynamic $(BINARY_LDFLAGS)
+
 managesieve_LDADD = $(libs) $(LIBDOVECOT_STORAGE) $(LIBDOVECOT_LDA) $(LIBDOVECOT)
 
 managesieve_DEPENDENCIES = $(libs) $(LIBDOVECOT_STORAGE_DEPS) $(LIBDOVECOT_LDA_DEPS) $(LIBDOVECOT_DEPS)
diff --git a/src/sieve-tools/Makefile.am b/src/sieve-tools/Makefile.am
index 33bfbf57f..f2ceffd64 100644
--- a/src/sieve-tools/Makefile.am
+++ b/src/sieve-tools/Makefile.am
@@ -16,7 +16,8 @@ libs_deps = $(libs) $(LIBDOVECOT_STORAGE_DEPS) $(LIBDOVECOT_LDA_DEPS) $(LIBDOVEC
 
 # Sieve Compile Tool
 
-sievec_LDFLAGS = -export-dynamic
+sievec_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+sievec_LDFLAGS = -export-dynamic $(BINARY_LDFLAGS)
 sievec_LDADD = $(libs_ldadd)
 sievec_DEPENDENCIES = $(libs_deps)
 
@@ -25,7 +26,8 @@ sievec_SOURCES = \
 
 # Sieve Dump Tool
 
-sieve_dump_LDFLAGS = -export-dynamic
+sieve_dump_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+sieve_dump_LDFLAGS = -export-dynamic $(BINARY_LDFLAGS)
 sieve_dump_LDADD = $(libs_ldadd)
 sieve_dump_DEPENDENCIES = $(libs_deps)
 
@@ -34,7 +36,8 @@ sieve_dump_SOURCES = \
 
 # Sieve Test Tool
 
-sieve_test_LDFLAGS = -export-dynamic
+sieve_test_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+sieve_test_LDFLAGS = -export-dynamic $(BINARY_LDFLAGS)
 sieve_test_LDADD = $(libs_ldadd)
 sieve_test_DEPENDENCIES = $(libs_deps)
 
@@ -45,7 +48,8 @@ sieve_test_SOURCES = \
 
 # Sieve Filter Tool
 
-sieve_filter_LDFLAGS = -export-dynamic
+sieve_filter_CPPFLAGS = $(AM_CPPFLAGS) $(BINARY_CFLAGS)
+sieve_filter_LDFLAGS = -export-dynamic $(BINARY_LDFLAGS)
 sieve_filter_LDADD = $(libs_ldadd)
 sieve_filter_DEPENDENCIES = $(libs_deps)
 
-- 
GitLab