Nalin Dahyabhai 2202e37
Build binaries in this package as RELRO PIEs, libraries as partial RELRO,
Nalin Dahyabhai 2202e37
and install shared libraries with the execute bit set on them.  Prune out
Nalin Dahyabhai 0fde11f
the -L/usr/lib* and PIE flags where they might leak out and affect
Nalin Dahyabhai 2202e37
apps which just want to link with the libraries. FIXME: needs to check and
Nalin Dahyabhai 2202e37
not just assume that the compiler supports using these flags.
d067ec2
Nalin Dahyabhai 0fde11f
--- krb5/src/config/shlib.conf
Nalin Dahyabhai 0fde11f
+++ krb5/src/config/shlib.conf
Nalin Dahyabhai 2202e37
@@ -419,7 +419,7 @@ mips-*-netbsd*)
Nalin Dahyabhai 2202e37
 	SHLIBEXT=.so
Nalin Dahyabhai 2202e37
 	# Linux ld doesn't default to stuffing the SONAME field...
Nalin Dahyabhai 2202e37
 	# Use objdump -x to examine the fields of the library
Nalin Dahyabhai 2202e37
-	LDCOMBINE='$(CC) -shared -fPIC -Wl,-h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT),--no-undefined'
Nalin Dahyabhai 6e03c5a
+	LDCOMBINE='$(CC) -shared -fPIC -Wl,-h,$(LIBPREFIX)$(LIBBASE)$(SHLIBSEXT),--no-undefined -Wl,-z,relro -Wl,--warn-shared-textrel'
Nalin Dahyabhai 2202e37
 	# 
Nalin Dahyabhai 2202e37
 	LDCOMBINE_TAIL='-Wl,--version-script binutils.versions && $(PERL) -w $(top_srcdir)/util/export-check.pl $(SHLIB_EXPORT_FILE) $@'
Nalin Dahyabhai 2202e37
 	SHLIB_EXPORT_FILE_DEP=binutils.versions
09a9ac8
@@ -430,7 +430,8 @@
09a9ac8
 	SHLIB_EXPFLAGS='$(SHLIB_RPATH_FLAGS) $(SHLIB_DIRS) $(SHLIB_EXPLIBS)'
09a9ac8
 	PROFFLAGS=-pg
d067ec2
 	PROG_RPATH_FLAGS='$(RPATH_FLAG)$(PROG_RPATH)'
09a9ac8
-	CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) $(LDFLAGS)'
Nalin Dahyabhai 2202e37
+	CC_LINK_SHARED='$(CC) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CFLAGS) -pie -Wl,-z,relro -Wl,-z,now $(LDFLAGS)'
d067ec2
+	INSTALL_SHLIB='${INSTALL} -m755'
d067ec2
 	CC_LINK_STATIC='$(CC) $(PROG_LIBPATH) $(CFLAGS) $(LDFLAGS)'
d067ec2
 	CXX_LINK_SHARED='$(CXX) $(PROG_LIBPATH) $(PROG_RPATH_FLAGS) $(CXXFLAGS) $(LDFLAGS)'
d067ec2
 	CXX_LINK_STATIC='$(CXX) $(PROG_LIBPATH) $(CXXFLAGS) $(LDFLAGS)'
Nalin Dahyabhai d2ea586
--- krb5/src/build-tools/krb5-config.in
Nalin Dahyabhai d2ea586
+++ krb5/src/build-tools/krb5-config.in
Nalin Dahyabhai 0fde11f
@@ -189,6 +189,13 @@ if test -n "$do_libs"; then
d067ec2
 	    -e 's#\$(PTHREAD_CFLAGS)#'"$PTHREAD_CFLAGS"'#' \
Nalin Dahyabhai 0fde11f
 	    -e 's#\$(CFLAGS)##'`
d067ec2
 
d067ec2
+    if test `dirname $libdir` = /usr ; then
d067ec2
+        lib_flags=`echo $lib_flags | sed -e "s#-L$libdir##" -e "s#$RPATH_FLAG$libdir##"`
d067ec2
+    fi
Nalin Dahyabhai 2202e37
+    lib_flags=`echo $lib_flags | sed -e "s#-fPIE##g" -e "s#-pie##g"`
Nalin Dahyabhai 2202e37
+    lib_flags=`echo $lib_flags | sed -e "s#-Wl,-z,relro##g"`
Nalin Dahyabhai 2202e37
+    lib_flags=`echo $lib_flags | sed -e "s#-Wl,-z,now##g"`
d067ec2
+
d067ec2
     if test $library = 'kdb'; then
d067ec2
 	lib_flags="$lib_flags -lkdb5 $KDB5_DB_LIB"
d067ec2
 	library=krb5
Nalin Dahyabhai 0fde11f
--- krb5/src/config/pre.in
Nalin Dahyabhai 0fde11f
+++ krb5/src/config/pre.in
Nalin Dahyabhai 2ee39c5
@@ -188,7 +188,7 @@
Nalin Dahyabhai 2ee39c5
 INSTALL_SCRIPT=@INSTALL_PROGRAM@
Nalin Dahyabhai 2ee39c5
 INSTALL_DATA=@INSTALL_DATA@
Nalin Dahyabhai 2ee39c5
 INSTALL_SHLIB=@INSTALL_SHLIB@
Nalin Dahyabhai 2ee39c5
-INSTALL_SETUID=$(INSTALL) $(INSTALL_STRIP) -m 4755 -o root
Nalin Dahyabhai 2ee39c5
+INSTALL_SETUID=$(INSTALL) $(INSTALL_STRIP) -m 4755
Nalin Dahyabhai 2ee39c5
 ## This is needed because autoconf will sometimes define @exec_prefix@ to be
Nalin Dahyabhai 2ee39c5
 ## ${prefix}.
Nalin Dahyabhai 2ee39c5
 prefix=@prefix@