From 8c438351c535f7d822c163df070a72c2b4b46bba Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Mon, 30 Jan 2012 15:03:40 -0500 Subject: [PATCH] Verify that we can link executables built with -D_FORTIFY_SOURCE before using it. --HG-- branch : 1.7 --- configure | 17 +++++++++++++++++ configure.in | 4 +++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/configure b/configure index ec3b88bf0..d2eb695c6 100755 --- a/configure +++ b/configure @@ -16147,8 +16147,25 @@ done O_CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" ac_fn_c_check_func "$LINENO" "__sprintf_chk" "ac_cv_func___sprintf_chk" if test "x$ac_cv_func___sprintf_chk" = xyes; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +char buf[4]; (void)sprintf(buf, "%s", "foo"); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : OSDEFS="${OSDEFS} -D_FORTIFY_SOURCE=2" fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi CPPFLAGS="$O_CPPFLAGS" diff --git a/configure.in b/configure.in index 47b6e3d38..d4e158821 100644 --- a/configure.in +++ b/configure.in @@ -2025,7 +2025,9 @@ dnl dnl If libc supports _FORTIFY_SOURCE check functions, use it. dnl O_CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2" -AC_CHECK_FUNC(__sprintf_chk, [OSDEFS="${OSDEFS} -D_FORTIFY_SOURCE=2"], []) +AC_CHECK_FUNC(__sprintf_chk, [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[char buf[4]; (void)sprintf(buf, "%s", "foo");]])], [OSDEFS="${OSDEFS} -D_FORTIFY_SOURCE=2"], []) +], []) CPPFLAGS="$O_CPPFLAGS" AC_CHECK_FUNCS(getutxid getutid, [break]) -- 2.40.0