]> granicus.if.org Git - sudo/commitdiff
If getaddrinfo() is missing libsudoutil may need to pull in networking
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 29 Jul 2014 19:06:18 +0000 (13:06 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 29 Jul 2014 19:06:18 +0000 (13:06 -0600)
libraries.

configure
configure.ac
lib/util/Makefile.in
plugins/sudoers/Makefile.in

index 646421ce2732fde8f31f20324c54dc71373f074b..f4545c8d11d0d750cb891e420fd69b21c515b279 100755 (executable)
--- a/configure
+++ b/configure
@@ -734,7 +734,6 @@ LOCALEDIR_SUFFIX
 SUDO_NLS
 LIBMD
 LIBINTL
-LT_STATIC
 LIBDL
 CONFIGURE_ARGS
 LIBTOOL_DEPS
@@ -780,6 +779,8 @@ SUDO_LIBS
 SUDO_OBJS
 SUDOERS_OBJS
 COMMON_OBJS
+LT_DEP_LIBS
+LT_STATIC
 LT_LDEXPORTS
 LT_LDDEP
 LT_LDOPT
@@ -2974,6 +2975,7 @@ $as_echo "$as_me: Configuring Sudo version $PACKAGE_VERSION" >&6;}
 
 
 
+
 
 
 #
@@ -19110,7 +19112,7 @@ fi
     if eval test \$sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras = "yes"; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-       NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break
+       NET_LIBS="${NET_LIBS} $libs"; break
     else
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -19186,7 +19188,6 @@ $as_echo "yes" >&6; }
            $as_echo "#define HAVE_INET_NTOA 1" >>confdefs.h
 
            NET_LIBS="${NET_LIBS} $libs"
-           LIBS="${LIBS} $libs"
            break
 
     else
@@ -19200,6 +19201,7 @@ $as_echo "no" >&6; }
 fi
 
 found=false
+INET_PTON_LIBS=
 ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton"
 if test "x$ac_cv_func_inet_pton" = xyes; then :
 
@@ -19269,7 +19271,7 @@ $as_echo "yes" >&6; }
            $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
 
            NET_LIBS="${NET_LIBS} $libs"
-           LIBS="${LIBS} $libs"
+           INET_PTON_LIBS="$libs"
            break
 
     else
@@ -19356,7 +19358,7 @@ fi
     if eval test \$sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras = "yes"; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-       NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break
+       NET_LIBS="${NET_LIBS} $libs"; break
     else
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -19476,7 +19478,85 @@ if test X"$ax_cv_func_getaddrinfo" = X"no"; then
 "
     done
 
+    # We need libsudo_util to pull in dependent libraries for
+    # inet_pton(), gethostbyname(), and getservbyname()
+    if test -n "${INET_PTON_LIBS}"; then
+       LT_DEP_LIBS="${LT_DEP_LIBS}${LT_DEP_LIBS+ }${INET_PTON_LIBS}"
+       LIBS="${LIBS}${LIBS+ }${INET_PTON_LIBS}"
+    fi
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
+
+else
+
+       for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
+           _libs=
+           for lib in $libs; do
+               case "$LT_DEP_LIBS" in
+                   *"$lib"*)   ;;
+                   *)      _libs="$_libs $lib";;
+               esac
+           done
+           libs="${_libs# }"
+           test -z "$libs" && continue
+           lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
+           extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
+
+    _sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/       *//g' -e 's/-l/_/g'`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -l$lib${5+ }$extralibs" >&5
+$as_echo_n "checking for gethostbyname in -l$lib${5+ }$extralibs... " >&6; }
+    if { as_var=sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
+  $as_echo_n "(cached) " >&6
+else
+
+       SUDO_CHECK_LIB_OLIBS="$LIBS"
+       LIBS="$LIBS -l$lib${5+ }$extralibs"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras=yes
+else
+  eval sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LIBS="$SUDO_CHECK_LIB_OLIBS"
+
+fi
+
+    if eval test \$sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras = "yes"; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       LT_DEP_LIBS="${LT_DEP_LIBS} $libs"; break
+    else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+    fi
+
+       done
+
+fi
+
 fi
+LIBS="$OLIBS"
 
 for ac_func in getprogname
 do :
index 8c0552037ae566b7e31801cf0597ce6225dd3821..e0a4a76b5aedc4bb735b5c2d163a238e8616a667 100644 (file)
@@ -26,6 +26,8 @@ AC_SUBST([LT_LDMAP])
 AC_SUBST([LT_LDOPT])
 AC_SUBST([LT_LDDEP])
 AC_SUBST([LT_LDEXPORTS])
+AC_SUBST([LT_STATIC])
+AC_SUBST([LT_DEP_LIBS])
 AC_SUBST([COMMON_OBJS])
 AC_SUBST([SUDOERS_OBJS])
 AC_SUBST([SUDO_OBJS])
@@ -72,7 +74,6 @@ AC_SUBST([ZLIB_SRC])
 AC_SUBST([LIBTOOL_DEPS])
 AC_SUBST([CONFIGURE_ARGS])
 AC_SUBST([LIBDL])
-AC_SUBST([LT_STATIC])
 AC_SUBST([LIBINTL])
 AC_SUBST([LIBMD])
 AC_SUBST([SUDO_NLS])
@@ -2661,7 +2662,7 @@ AC_CHECK_FUNC(socket, [], [
        test -z "$libs" && continue
        lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
        extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
-       SUDO_CHECK_LIB($lib, socket, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
+       SUDO_CHECK_LIB($lib, socket, [NET_LIBS="${NET_LIBS} $libs"; break], [], [$extralibs])
     done
 ])
 dnl
@@ -2685,7 +2686,6 @@ AC_CHECK_FUNC(inet_ntoa, [AC_DEFINE(HAVE_INET_NTOA)], [
        SUDO_CHECK_LIB($lib, inet_ntoa, [
            AC_DEFINE(HAVE_INET_NTOA)
            NET_LIBS="${NET_LIBS} $libs"
-           LIBS="${LIBS} $libs"
            break
        ], [], [$extralibs])
     done
@@ -2696,6 +2696,7 @@ dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols
 dnl Some systems may have inet_pton() in libresolv.
 dnl
 found=false
+INET_PTON_LIBS=
 AC_CHECK_FUNC(inet_pton, [
     found=true
     AC_DEFINE(HAVE_INET_PTON)
@@ -2716,7 +2717,7 @@ AC_CHECK_FUNC(inet_pton, [
            found=true
            AC_DEFINE(HAVE_INET_PTON)
            NET_LIBS="${NET_LIBS} $libs"
-           LIBS="${LIBS} $libs"
+           INET_PTON_LIBS="$libs"
            break
        ], [], [$extralibs])
     done
@@ -2741,7 +2742,7 @@ AC_CHECK_FUNC(syslog, [], [
        test -z "$libs" && continue
        lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
        extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
-       SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; LIBS="${LIBS} $libs"; break], [], [$extralibs])
+       SUDO_CHECK_LIB($lib, syslog, [NET_LIBS="${NET_LIBS} $libs"; break], [], [$extralibs])
     done
 ])
 #
@@ -2757,7 +2758,30 @@ for lib in $LIBS; do
 done
 if test X"$ax_cv_func_getaddrinfo" = X"no"; then
     SUDO_APPEND_COMPAT_EXP(sudo_getaddrinfo sudo_freeaddrinfo sudo_gai_strerror)
+    # We need libsudo_util to pull in dependent libraries for
+    # inet_pton(), gethostbyname(), and getservbyname()
+    if test -n "${INET_PTON_LIBS}"; then
+       LT_DEP_LIBS="${LT_DEP_LIBS}${LT_DEP_LIBS+ }${INET_PTON_LIBS}"
+       LIBS="${LIBS}${LIBS+ }${INET_PTON_LIBS}"
+    fi
+    AC_CHECK_FUNC(gethostbyname, [], [
+       for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
+           _libs=
+           for lib in $libs; do
+               case "$LT_DEP_LIBS" in
+                   *"$lib"*)   ;;
+                   *)      _libs="$_libs $lib";;
+               esac
+           done
+           libs="${_libs# }"
+           test -z "$libs" && continue
+           lib="`echo \"$libs\"|sed -e 's/^-l//' -e 's/ .*$//'`"
+           extralibs="`echo \"$libs\"|sed 's/^-l[[^ ]]*//'`"
+           SUDO_CHECK_LIB($lib, gethostbyname, [LT_DEP_LIBS="${LT_DEP_LIBS} $libs"; break], [], [$extralibs])
+       done
+    ])
 fi
+LIBS="$OLIBS"
 
 dnl
 dnl Check for getprogname() or __progname
index fe1548f975f6a489475fcfcca382563db50d1ebf..53df7c1ec822b9635191471523aa8c6bdb73738b 100644 (file)
@@ -134,7 +134,7 @@ $(shlib_opt): $(shlib_exp)
        @$(SED) 's/^/+e /' $(shlib_exp) > $@
 
 libsudo_util.la: $(LTOBJS) @LT_LDDEP@
-       $(LIBTOOL) --mode=link $(CC) -o $@ $(LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) -version-info $(SHLIB_VERSION) -rpath $(libexecdir)/sudo @LIBDL@
+       $(LIBTOOL) --mode=link $(CC) -o $@ $(LDFLAGS) $(LT_LDFLAGS) $(LTOBJS) -version-info $(SHLIB_VERSION) -rpath $(libexecdir)/sudo @LT_DEP_LIBS@ @LIBDL@
 
 siglist.c: mksiglist
        ./mksiglist > $@
index ec86342b98fea56288dcf598c20b57531d210c3c..b0c67df6b7349297e853afa333e8cf5e35bfd343 100644 (file)
@@ -53,7 +53,7 @@ LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la
 LIBS = $(LT_LIBS) @LIBINTL@
 NET_LIBS = @NET_LIBS@
 SUDOERS_LIBS = @SUDOERS_LIBS@ @AFS_LIBS@ @GETGROUPS_LIB@ $(LIBS) $(NET_LIBS) @ZLIB@ @LIBMD@
-REPLAY_LIBS = @REPLAY_LIBS@ $(NET_LIBS) @ZLIB@
+REPLAY_LIBS = @REPLAY_LIBS@ @ZLIB@
 VISUDO_LIBS = $(NET_LIBS) @LIBMD@
 TESTSUDOERS_LIBS = $(NET_LIBS) @LIBMD@