--- embedaddon/sudo/configure.in 2013/07/22 10:46:11 1.1.1.4 +++ embedaddon/sudo/configure.in 2013/10/14 07:56:33 1.1.1.5 @@ -3,7 +3,7 @@ dnl Process this file with GNU autoconf to produce a c dnl dnl Copyright (c) 1994-1996,1998-2013 Todd C. Miller dnl -AC_INIT([sudo], [1.8.7], [http://www.sudo.ws/bugs/], [sudo]) +AC_INIT([sudo], [1.8.8], [http://www.sudo.ws/bugs/], [sudo]) AC_CONFIG_HEADER([config.h pathnames.h]) dnl dnl Note: this must come after AC_INIT @@ -42,6 +42,7 @@ AC_SUBST([MANDIRTYPE]) AC_SUBST([MANCOMPRESS]) AC_SUBST([MANCOMPRESSEXT]) AC_SUBST([SHLIB_MODE]) +AC_SUBST([SHLIB_EXT]) AC_SUBST([SUDOERS_MODE]) AC_SUBST([SUDOERS_UID]) AC_SUBST([SUDOERS_GID]) @@ -122,6 +123,7 @@ AC_SUBST([netsvc_conf]) AC_SUBST([secure_path]) AC_SUBST([editor]) AC_SUBST([pam_session]) +AC_SUBST([pam_login_service]) AC_SUBST([PLUGINDIR]) # # Begin initial values for man page substitution @@ -164,6 +166,7 @@ sesh_file=/usr/local/libexec/sudo/sesh nsswitch_conf=/etc/nsswitch.conf secure_path="not set" pam_session=on +pam_login_service=sudo PLUGINDIR=/usr/local/libexec/sudo # # End initial values for man page substitution @@ -1489,8 +1492,10 @@ else # Darwin uses .dylib for libraries but .so for modules if test X"$_shrext" = X".dylib"; then SOEXT=".so" + SHLIB_EXT=".dylib" else SOEXT="$_shrext" + SHLIB_EXT="$_shrext" fi fi AC_MSG_CHECKING(path to sudo_noexec.so) @@ -1958,8 +1963,14 @@ case "$host" in CHECKSHADOW="false" test -z "$with_pam" && AUTH_EXCL_DEF="PAM" : ${with_logincap='yes'} + # Darwin 8 and above can interpose library symbols cleanly + if test $OSMAJOR -ge 8; then + AC_DEFINE(HAVE___INTERPOSE) + dlyld_interpose=yes + else + RTLD_PRELOAD_ENABLE_VAR="DYLD_FORCE_FLAT_NAMESPACE" + fi RTLD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES" - RTLD_PRELOAD_ENABLE_VAR="DYLD_FORCE_FLAT_NAMESPACE" ;; *-*-nextstep*) # lockf() on is broken on the NeXT -- use flock instead @@ -2124,7 +2135,7 @@ if test "$ac_cv_sys_posix_termios" != "yes"; then fi SUDO_MAILDIR if test ${with_logincap-'no'} != "no"; then - AC_CHECK_HEADERS(login_cap.h, [LOGINCAP_USAGE='[[-c class|-]] '; LCMAN=1 + AC_CHECK_HEADERS(login_cap.h, [LOGINCAP_USAGE='[[-c class]] '; LCMAN=1 case "$OS" in freebsd|netbsd) SUDO_LIBS="${SUDO_LIBS} -lutil" @@ -2143,7 +2154,9 @@ if test ${with_project-'no'} != "no"; then fi dnl dnl typedef checks +dnl We need to define __STDC_WANT_LIB_EXT1__ for errno_t and rsize_t dnl +SUDO_APPEND_CPPFLAGS(-D__STDC_WANT_LIB_EXT1__=1) AC_TYPE_MODE_T AC_TYPE_UID_T AC_CHECK_TYPE([__signed char], [], [AC_CHECK_TYPE([signed char], [AC_DEFINE(__signed, signed)], [AC_DEFINE(__signed, [])])]) @@ -2163,6 +2176,7 @@ if test X"$ac_cv_type_long_long_int" != X"yes"; then AC_MSG_ERROR(["C compiler does not appear have required long long support"]) fi AC_CHECK_SIZEOF([long int]) +AC_CHECK_TYPE(id_t, unsigned int) AC_CHECK_TYPE(size_t, unsigned int) AC_CHECK_TYPE(ssize_t, int) AC_CHECK_TYPE(dev_t, int) @@ -2173,6 +2187,8 @@ AC_CHECK_TYPE(uint64_t, unsigned long long) AC_CHECK_TYPE(socklen_t, [], [AC_DEFINE(socklen_t, unsigned int)], [ AC_INCLUDES_DEFAULT #include ]) +AC_CHECK_TYPE(rsize_t, size_t) +AC_CHECK_TYPE(errno_t, int) SUDO_UID_T_LEN SUDO_SOCK_SA_LEN dnl @@ -2348,11 +2364,20 @@ SUDO_FUNC_FNMATCH([AC_DEFINE(HAVE_FNMATCH)], [AC_LIBOB COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }fnm_test" ]) SUDO_FUNC_ISBLANK -AC_REPLACE_FUNCS(memrchr pw_dup strlcpy strlcat) +AC_REPLACE_FUNCS(memrchr memset_s pw_dup strlcpy strlcat) AC_CHECK_FUNCS(nanosleep, [], [ # On Solaris, nanosleep is in librt AC_CHECK_LIB(rt, nanosleep, [REPLAY_LIBS="${REPLAY_LIBS} -lrt"], [AC_LIBOBJ(nanosleep)]) ]) +AC_CHECK_FUNCS(getopt_long, [], [AC_LIBOBJ(getopt_long) + AC_MSG_CHECKING([for optreset]) + AC_CACHE_VAL(sudo_cv_optreset, [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern int optreset; optreset = 1; return optreset;]])], [sudo_cv_optreset=yes], [sudo_cv_optreset=no])]) + if test "$sudo_cv_optreset" = "yes"; then + AC_DEFINE(HAVE_OPTRESET) + fi + AC_MSG_RESULT($sudo_cv_optreset) +]) AC_CHECK_FUNCS(closefrom, [], [AC_LIBOBJ(closefrom) AC_CHECK_DECL(F_CLOSEM, AC_DEFINE(HAVE_FCNTL_CLOSEM), [], [ #include @@ -2369,6 +2394,54 @@ if test X"$ac_cv_type_struct_timespec" != X"no"; then [AC_CHECK_MEMBER([struct stat.st_mtimespec], AC_DEFINE([HAVE_ST_MTIMESPEC]))]) fi dnl +dnl Function checks for sudo_noexec +dnl +if test X"$with_noexec" != X"no"; then + # Check for underscore versions of standard exec functions + # unless we are using dyld symbole interposition + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_execl __execl) + AC_CHECK_FUNCS(_execle __execle) + AC_CHECK_FUNCS(_execlp __execlp) + AC_CHECK_FUNCS(_execv __execv) + AC_CHECK_FUNCS(_execve __execve) + AC_CHECK_FUNCS(_execvp __execvp) + fi + # Check for non-standard exec functions including underscore versions + AC_CHECK_FUNCS(exect, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_exect __exect) + fi + ]) + AC_CHECK_FUNCS(execvP, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_execvP __execvP) + fi + ]) + AC_CHECK_FUNCS(execvpe, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_execvpe __execvpe) + fi + ]) + AC_CHECK_FUNCS(fexecve, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_fexecve __fexecve) + fi + ]) + # Check for posix_spawn, posix_spawnp and any underscore versions + AC_CHECK_FUNCS(posix_spawn, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_posix_spawn __posix_spawn) + fi + ]) + AC_CHECK_FUNCS(posix_spawnp, [ + if test X"$dlyld_interpose" != X"yes"; then + AC_CHECK_FUNCS(_posix_spawnp __posix_spawnp) + fi + ]) +fi + +dnl dnl Check for the dirfd function/macro. If not found, look for dd_fd in DIR. dnl AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include @@ -2749,6 +2822,7 @@ if test ${with_pam-"no"} != "no"; then yes) AC_DEFINE([HAVE_PAM_LOGIN]) AC_MSG_CHECKING(whether to use PAM login) AC_MSG_RESULT(yes) + pam_login_service="sudo-i" ;; no) ;; *) AC_MSG_ERROR(["--with-pam-login does not take an argument."]) @@ -2793,7 +2867,7 @@ dnl if test ${with_bsdauth-'no'} != "no"; then AC_CHECK_HEADER(bsd_auth.h, AC_DEFINE(HAVE_BSD_AUTH_H) [AUTH_OBJS="$AUTH_OBJS bsdauth.lo"] - [BSDAUTH_USAGE='[[-a auth_type]] '] + [BSDAUTH_USAGE='[[-a type]] '] [AUTH_EXCL=BSD_AUTH; BAMAN=1], [AC_MSG_ERROR([BSD authentication was specified but bsd_auth.h could not be found])]) fi @@ -3706,6 +3780,7 @@ AH_TEMPLATE(HAVE_LIBINTL_H, [Define to 1 if you have t AH_TEMPLATE(HAVE_LINUX_AUDIT, [Define to 1 to enable Linux audit support.]) AH_TEMPLATE(HAVE_SSSD, [Define to 1 to enable SSSD support.]) AH_TEMPLATE(HAVE_OPIE, [Define to 1 if you use NRL OPIE.]) +AH_TEMPLATE(HAVE_OPTRESET, [Define to 1 if you have the `optreset' symbol.]) AH_TEMPLATE(HAVE_PAM, [Define to 1 if you use PAM authentication.]) AH_TEMPLATE(HAVE_PAM_LOGIN, [Define to 1 if you use a specific PAM session for sudo -i.]) AH_TEMPLATE(HAVE_PROJECT_H, [Define to 1 if you have the header file.]) @@ -3749,6 +3824,7 @@ AH_TEMPLATE(socklen_t, [Define to `unsigned int' if