9c4c6b
From 4e42a6786a06b7223f27536267492a463a700c76 Mon Sep 17 00:00:00 2001
db6389
From: Robbie Harwood <rharwood@redhat.com>
db6389
Date: Tue, 23 Aug 2016 16:45:26 -0400
9c4c6b
Subject: [PATCH] [downstream] Adjust build configuration
db6389
db6389
Build binaries in this package as RELRO PIEs, libraries as partial RELRO,
db6389
and install shared libraries with the execute bit set on them.  Prune out
db6389
the -L/usr/lib* and PIE flags where they might leak out and affect
db6389
apps which just want to link with the libraries. FIXME: needs to check and
db6389
not just assume that the compiler supports using these flags.
9c4c6b
9c4c6b
Last-updated: krb5-1.15-beta1
9c4c6b
(cherry picked from commit 92508996ed4c69fa6f5cf855fdf10f34cfa07ec9)
db6389
---
db6389
 src/build-tools/krb5-config.in | 7 +++++++
db6389
 src/config/pre.in              | 2 +-
db6389
 src/config/shlib.conf          | 5 +++--
db6389
 3 files changed, 11 insertions(+), 3 deletions(-)
db6389
db6389
diff --git a/src/build-tools/krb5-config.in b/src/build-tools/krb5-config.in
db6389
index c17cb5eb5..1891dea99 100755
db6389
--- a/src/build-tools/krb5-config.in
db6389
+++ b/src/build-tools/krb5-config.in
db6389
@@ -226,6 +226,13 @@ if test -n "$do_libs"; then
db6389
 	    -e 's#\$(PTHREAD_CFLAGS)#'"$PTHREAD_CFLAGS"'#' \
db6389
 	    -e 's#\$(CFLAGS)##'`
db6389
 
db6389
+    if test `dirname $libdir` = /usr ; then
db6389
+        lib_flags=`echo $lib_flags | sed -e "s#-L$libdir##" -e "s#$RPATH_FLAG$libdir##"`
db6389
+    fi
db6389
+    lib_flags=`echo $lib_flags | sed -e "s#-fPIE##g" -e "s#-pie##g"`
db6389
+    lib_flags=`echo $lib_flags | sed -e "s#-Wl,-z,relro##g"`
db6389
+    lib_flags=`echo $lib_flags | sed -e "s#-Wl,-z,now##g"`
db6389
+
db6389
     if test $library = 'kdb'; then
db6389
 	lib_flags="$lib_flags -lkdb5 $KDB5_DB_LIB"
db6389
 	library=krb5
db6389
diff --git a/src/config/pre.in b/src/config/pre.in
db6389
index 917357df9..a8540ae2a 100644
db6389
--- a/src/config/pre.in
db6389
+++ b/src/config/pre.in
db6389
@@ -185,7 +185,7 @@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ $(INSTALL_STRIP)
db6389
 INSTALL_SCRIPT=@INSTALL_PROGRAM@
db6389
 INSTALL_DATA=@INSTALL_DATA@
db6389
 INSTALL_SHLIB=@INSTALL_SHLIB@
db6389
-INSTALL_SETUID=$(INSTALL) $(INSTALL_STRIP) -m 4755 -o root
db6389
+INSTALL_SETUID=$(INSTALL) $(INSTALL_STRIP) -m 4755
db6389
 ## This is needed because autoconf will sometimes define @exec_prefix@ to be
db6389
 ## ${prefix}.
db6389
 prefix=@prefix@
db6389
diff --git a/src/config/shlib.conf b/src/config/shlib.conf
db6389
index 3e4af6c02..2b20c3fda 100644
db6389
--- a/src/config/shlib.conf
db6389
+++ b/src/config/shlib.conf
db6389
@@ -423,7 +423,7 @@ mips-*-netbsd*)
db6389
 	# Linux ld doesn't default to stuffing the SONAME field...
db6389
 	# Use objdump -x to examine the fields of the library
db6389
 	# UNDEF_CHECK is suppressed by --enable-asan
db6389
-	LDCOMBINE='$(CC) -shared -fPIC -Wl,-h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $(UNDEF_CHECK)'
db6389
+	LDCOMBINE='$(CC) -shared -fPIC -Wl,-h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT) $(UNDEF_CHECK)  -Wl,-z,relro -Wl,--warn-shared-textrel'
db6389
 	UNDEF_CHECK='-Wl,--no-undefined'
db6389
 	# $(EXPORT_CHECK) runs export-check.pl when in maintainer mode.
db6389
 	LDCOMBINE_TAIL='-Wl,--version-script binutils.versions $(EXPORT_CHECK)'
db6389
@@ -435,7 +435,8 @@ mips-*-netbsd*)
db6389
 	SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
db6389
 	PROFFLAGS=-pg
db6389
 	PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
db6389
-	CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
db6389
+	CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) -pie -Wl,-z,relro -Wl,-z,now $(LDFLAGS)'
db6389
+	INSTALL_SHLIB='${INSTALL} -m755'
db6389
 	CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
db6389
 	CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
db6389
 	CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'