2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-22 01:49:11 +00:00

Fix inet_ntop() replacement on older systems without it.

We only expose the prototype for net_ifs.c due to the
use of socklen_t.
This commit is contained in:
Todd C. Miller 2014-10-23 15:44:03 -06:00
parent 7dc2c8fa1c
commit d0cc4d9e4b
5 changed files with 29 additions and 4 deletions

14
configure vendored
View File

@ -19216,6 +19216,20 @@ $as_echo "no" >&6; }
fi
LIBS="$OLIBS"
if test X"$found" != X"true"; then
case " $LIBOBJS " in
*" inet_ntop.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS inet_ntop.$ac_objext"
;;
esac
for _sym in sudo_inet_ntop; do
COMPAT_EXP="${COMPAT_EXP}${_sym}
"
done
fi
OLIBS="$LIBS"
LIBS="${LIBS} ${NET_LIBS}"
found=false

View File

@ -2686,6 +2686,10 @@ AC_CHECK_FUNC(inet_ntop, [
done
])
LIBS="$OLIBS"
if test X"$found" != X"true"; then
AC_LIBOBJ(inet_ntop)
SUDO_APPEND_COMPAT_EXP(sudo_inet_ntop)
fi
dnl
dnl If inet_pton(3) not in libc, check -lnsl and -linet
dnl May need to link with *both* -lnsl and -lsocket due to unresolved symbols

View File

@ -19,8 +19,8 @@
* Materiel Command, USAF, under agreement number F39502-99-1-0512.
*/
#ifndef _SUDO_MISSING_H
#define _SUDO_MISSING_H
#ifndef _SUDO_COMPAT_H
#define _SUDO_COMPAT_H
#include <stdio.h>
#ifdef STDC_HEADERS
@ -467,6 +467,11 @@ __dso_public int sudo_clock_gettime(clockid_t clock_id, struct timespec *tp);
# undef clock_gettime
# define clock_gettime(_a, _b) sudo_clock_gettime((_a), (_b))
#endif /* HAVE_CLOCK_GETTIME */
#if !defined(HAVE_INET_NTOP) && defined(_SUDO_NET_IFS_C)
__dso_public char *sudo_inet_ntop(int af, const void *src, char *dst, socklen_t size);
# undef inet_ntop
# define inet_ntop(_a, _b, _c, _d) sudo_inet_ntop((_a), (_b), (_c), (_d))
#endif /* HAVE_INET_NTOP */
#ifndef HAVE_INET_PTON
__dso_public int sudo_inet_pton(int af, const char *src, void *dst);
# undef inet_pton
@ -478,4 +483,4 @@ __dso_public const char *sudo_getprogname(void);
# define getprogname() sudo_getprogname()
#endif /* HAVE_GETPROGNAME */
#endif /* _SUDO_MISSING_H */
#endif /* _SUDO_COMPAT_H */

View File

@ -211,7 +211,7 @@ inet_ntop6(const unsigned char *src, char *dst, socklen_t size)
* Paul Vixie, 1996.
*/
const char *
inet_ntop(int af, const void *src, char *dst, socklen_t size)
sudo_inet_ntop(int af, const void *src, char *dst, socklen_t size)
{
switch (af) {
case AF_INET:

View File

@ -84,6 +84,8 @@ struct rtentry;
# include <ifaddrs.h>
#endif
#define _SUDO_NET_IFS_C /* to expose sudo_inet_ntop in sudo_compat.h */
#define DEFAULT_TEXT_DOMAIN "sudo"
#include "sudo_gettext.h" /* must be included before sudo_compat.h */