]> granicus.if.org Git - sudo/commitdiff
Verify that we can link executables built with -D_FORTIFY_SOURCE
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 30 Jan 2012 19:09:17 +0000 (14:09 -0500)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 30 Jan 2012 19:09:17 +0000 (14:09 -0500)
before using it.

configure
configure.in

index e01adb2aec2897368458af4e91b6d1566affeef5..61ddc3f033b403e2797823ef58570d837278417b 100755 (executable)
--- a/configure
+++ b/configure
@@ -16379,8 +16379,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"
 
index 15bd08812b84b9d16fa2383cf3ddc89a99fed26b..3ef0f53ef3084a56c40e856fab310db40b0ab032 100644 (file)
@@ -2090,7 +2090,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"
 
 utmp_style=LEGACY