2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-31 14:25:15 +00:00

When checking for stack protector support we need to actually link

the test program.
This commit is contained in:
Todd C. Miller
2015-10-30 08:49:22 -06:00
parent b87ac0f0a2
commit 448f7f25f2
2 changed files with 52 additions and 37 deletions

46
configure vendored
View File

@@ -23922,11 +23922,17 @@ if ${sudo_cv_var_stack_protector+:} false; then :
$as_echo_n "(cached) " >&6
else
sudo_cv_var_stack_protector=no
# Avoid using CFLAGS since the compiler might optimize away our
# test. We don't want LIBS to interfere with the test but keep
# LDFLAGS as it may have an rpath needed to find the ssp lib.
_CFLAGS="$CFLAGS"
_LDFLAGS="$LDFLAGS"
CFLAGS="-fstack-protector-strong"
LDFLAGS="$_LDFLAGS -fstack-protector-strong"
_LIBS="$LIBS"
LIBS=
sudo_cv_var_stack_protector="-fstack-protector-strong"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -23940,14 +23946,13 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
sudo_cv_var_stack_protector="-fstack-protector-strong"
if ac_fn_c_try_link "$LINENO"; then :
else
CFLAGS="-fstack-protector-all"
LDFLAGS="$_LDFLAGS -fstack-protector-all"
sudo_cv_var_stack_protector="-fstack-protector-all"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -23961,14 +23966,13 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
sudo_cv_var_stack_protector="-fstack-protector-all"
if ac_fn_c_try_link "$LINENO"; then :
else
CFLAGS="-fstack-protector"
LDFLAGS="$_LDFLAGS -fstack-protector"
sudo_cv_var_stack_protector="-fstack-protector"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -23982,20 +23986,26 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
if ac_fn_c_try_link "$LINENO"; then :
sudo_cv_var_stack_protector="-fstack-protector"
else
sudo_cv_var_stack_protector=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$_CFLAGS"
LDFLAGS="$_LDFLAGS"
LIBS="$_LIBS"
fi

View File

@@ -3981,37 +3981,42 @@ if test "$enable_hardening" != "no"; then
AC_CACHE_CHECK([for compiler stack protector support],
[sudo_cv_var_stack_protector],
[
sudo_cv_var_stack_protector=no
# Avoid using CFLAGS since the compiler might optimize away our
# test. We don't want LIBS to interfere with the test but keep
# LDFLAGS as it may have an rpath needed to find the ssp lib.
_CFLAGS="$CFLAGS"
_LDFLAGS="$LDFLAGS"
CFLAGS="-fstack-protector-strong"
LDFLAGS="$_LDFLAGS -fstack-protector-strong"
AC_COMPILE_IFELSE([
_LIBS="$LIBS"
LIBS=
sudo_cv_var_stack_protector="-fstack-protector-strong"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
[[char buf[1024]; buf[1023] = '\0';]])
], [
sudo_cv_var_stack_protector="-fstack-protector-strong"
], [
CFLAGS="-fstack-protector-all"
LDFLAGS="$_LDFLAGS -fstack-protector-all"
AC_COMPILE_IFELSE([
], [], [
sudo_cv_var_stack_protector="-fstack-protector-all"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
[[char buf[1024]; buf[1023] = '\0';]])
], [
sudo_cv_var_stack_protector="-fstack-protector-all"
], [
CFLAGS="-fstack-protector"
LDFLAGS="$_LDFLAGS -fstack-protector"
AC_COMPILE_IFELSE([
], [], [
sudo_cv_var_stack_protector="-fstack-protector"
CFLAGS="$sudo_cv_var_stack_protector"
LDFLAGS="$_LDFLAGS $sudo_cv_var_stack_protector"
AC_LINK_IFELSE([
AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
[[char buf[1024]; buf[1023] = '\0';]])
], [
sudo_cv_var_stack_protector="-fstack-protector"
], [])
], [], [
sudo_cv_var_stack_protector=no
])
])
])
CFLAGS="$_CFLAGS"
LDFLAGS="$_LDFLAGS"
LIBS="$_LIBS"
]
)
if test X"$sudo_cv_var_stack_protector" != X"no"; then