Add configure check for va_copy instead of using #ifdef
This prevents the va_copy compat #define from being used if sudo_compat.h is somehow included before stdarg.h.
This commit is contained in:
@@ -967,6 +967,9 @@
|
|||||||
/* Define to 1 if you have the `vasprintf' function. */
|
/* Define to 1 if you have the `vasprintf' function. */
|
||||||
#undef HAVE_VASPRINTF
|
#undef HAVE_VASPRINTF
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `va_copy' function. */
|
||||||
|
#undef HAVE_VA_COPY
|
||||||
|
|
||||||
/* Define to 1 if you have the `vsnprintf' function. */
|
/* Define to 1 if you have the `vsnprintf' function. */
|
||||||
#undef HAVE_VSNPRINTF
|
#undef HAVE_VSNPRINTF
|
||||||
|
|
||||||
@@ -1018,6 +1021,9 @@
|
|||||||
/* Define to 1 if your crt0.o defines the __progname symbol for you. */
|
/* Define to 1 if your crt0.o defines the __progname symbol for you. */
|
||||||
#undef HAVE___PROGNAME
|
#undef HAVE___PROGNAME
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `__va_copy' function. */
|
||||||
|
#undef HAVE___VA_COPY
|
||||||
|
|
||||||
/* Define to 1 if you want the hostname to be entered into the log file. */
|
/* Define to 1 if you want the hostname to be entered into the log file. */
|
||||||
#undef HOST_IN_LOG
|
#undef HOST_IN_LOG
|
||||||
|
|
||||||
|
74
configure
vendored
74
configure
vendored
@@ -23316,6 +23316,78 @@ fi
|
|||||||
esac
|
esac
|
||||||
LIBS="$OLIBS"
|
LIBS="$OLIBS"
|
||||||
|
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
|
||||||
|
printf %s "checking for va_copy... " >&6; }
|
||||||
|
if test ${sudo_cv_func_va_copy+y}
|
||||||
|
then :
|
||||||
|
printf %s "(cached) " >&6
|
||||||
|
else $as_nop
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#include <stdarg.h>
|
||||||
|
va_list ap1, ap2;
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
va_copy(ap1, ap2);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"
|
||||||
|
then :
|
||||||
|
sudo_cv_func_va_copy=yes
|
||||||
|
else $as_nop
|
||||||
|
sudo_cv_func_va_copy=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
|
||||||
|
fi
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_va_copy" >&5
|
||||||
|
printf "%s\n" "$sudo_cv_func_va_copy" >&6; }
|
||||||
|
if test "$sudo_cv_func_va_copy" = "yes"; then
|
||||||
|
printf "%s\n" "#define HAVE_VA_COPY 1" >>confdefs.h
|
||||||
|
|
||||||
|
else
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __va_copy" >&5
|
||||||
|
printf %s "checking for __va_copy... " >&6; }
|
||||||
|
if test ${sudo_cv_func___va_copy+y}
|
||||||
|
then :
|
||||||
|
printf %s "(cached) " >&6
|
||||||
|
else $as_nop
|
||||||
|
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
#include <stdarg.h>
|
||||||
|
va_list ap1, ap2;
|
||||||
|
int
|
||||||
|
main (void)
|
||||||
|
{
|
||||||
|
__va_copy(ap1, ap2);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_link "$LINENO"
|
||||||
|
then :
|
||||||
|
sudo_cv_func___va_copy=yes
|
||||||
|
else $as_nop
|
||||||
|
sudo_cv_func___va_copy=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||||
|
conftest$ac_exeext conftest.$ac_ext
|
||||||
|
|
||||||
|
fi
|
||||||
|
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func___va_copy" >&5
|
||||||
|
printf "%s\n" "$sudo_cv_func___va_copy" >&6; }
|
||||||
|
if test "$sudo_cv_func___va_copy" = "yes"; then
|
||||||
|
printf "%s\n" "#define HAVE___VA_COPY 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
for ac_func in getprogname
|
for ac_func in getprogname
|
||||||
do :
|
do :
|
||||||
@@ -31782,6 +31854,8 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
23
configure.ac
23
configure.ac
@@ -3226,6 +3226,27 @@ case " $LIBOBJS " in
|
|||||||
esac
|
esac
|
||||||
LIBS="$OLIBS"
|
LIBS="$OLIBS"
|
||||||
|
|
||||||
|
dnl
|
||||||
|
dnl Check for va_copy or __va_copy in stdarg.h
|
||||||
|
dnl
|
||||||
|
AC_CACHE_CHECK([for va_copy], sudo_cv_func_va_copy, [
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
||||||
|
va_list ap1, ap2;]], [[va_copy(ap1, ap2);]])],
|
||||||
|
[sudo_cv_func_va_copy=yes], [sudo_cv_func_va_copy=no])
|
||||||
|
])
|
||||||
|
if test "$sudo_cv_func_va_copy" = "yes"; then
|
||||||
|
AC_DEFINE(HAVE_VA_COPY)
|
||||||
|
else
|
||||||
|
AC_CACHE_CHECK([for __va_copy], sudo_cv_func___va_copy, [
|
||||||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdarg.h>
|
||||||
|
va_list ap1, ap2;]], [[__va_copy(ap1, ap2);]])],
|
||||||
|
[sudo_cv_func___va_copy=yes], [sudo_cv_func___va_copy=no])
|
||||||
|
])
|
||||||
|
if test "$sudo_cv_func___va_copy" = "yes"; then
|
||||||
|
AC_DEFINE(HAVE___VA_COPY)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Check for getprogname()/setprogname() or __progname
|
dnl Check for getprogname()/setprogname() or __progname
|
||||||
dnl
|
dnl
|
||||||
@@ -5128,6 +5149,8 @@ AH_TEMPLATE(HAVE_SSL_CTX_SET_MIN_PROTO_VERSION, [Define to 1 if you have the `SS
|
|||||||
AH_TEMPLATE(HAVE_SSL_CTX_SET_CIPHERSUITES, [Define to 1 if you have the `SSL_CTX_set_ciphersuites' function or macro.])
|
AH_TEMPLATE(HAVE_SSL_CTX_SET_CIPHERSUITES, [Define to 1 if you have the `SSL_CTX_set_ciphersuites' function or macro.])
|
||||||
AH_TEMPLATE(SUDOERS_LOG_CLIENT, [Define to 1 to compile support for sudo_logsrvd in the sudoers plugin.])
|
AH_TEMPLATE(SUDOERS_LOG_CLIENT, [Define to 1 to compile support for sudo_logsrvd in the sudoers plugin.])
|
||||||
AH_TEMPLATE(HAVE_FALLTHROUGH_ATTRIBUTE, [Define to 1 if the compiler supports the fallthrough attribute.])
|
AH_TEMPLATE(HAVE_FALLTHROUGH_ATTRIBUTE, [Define to 1 if the compiler supports the fallthrough attribute.])
|
||||||
|
AH_TEMPLATE(HAVE_VA_COPY, [Define to 1 if you have the `va_copy' function.])
|
||||||
|
AH_TEMPLATE(HAVE___VA_COPY, [Define to 1 if you have the `__va_copy' function.])
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Bits to copy verbatim into config.h.in
|
dnl Bits to copy verbatim into config.h.in
|
||||||
|
@@ -91,8 +91,8 @@
|
|||||||
/*
|
/*
|
||||||
* Pre-C99 compilers may lack a va_copy macro.
|
* Pre-C99 compilers may lack a va_copy macro.
|
||||||
*/
|
*/
|
||||||
#ifndef va_copy
|
#ifndef HAVE_VA_COPY
|
||||||
# ifdef __va_copy
|
# ifdef HAVE___VA_COPY
|
||||||
# define va_copy(d, s) __va_copy(d, s)
|
# define va_copy(d, s) __va_copy(d, s)
|
||||||
# else
|
# else
|
||||||
# define va_copy(d, s) memcpy(&(d), &(s), sizeof(d));
|
# define va_copy(d, s) memcpy(&(d), &(s), sizeof(d));
|
||||||
|
Reference in New Issue
Block a user