Add proper check for existance of struct sockaddr member sa_len.
This commit is contained in:
parent
207e1c18ac
commit
09da966c8c
|
@ -6840,9 +6840,9 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
|
echo $ac_n "checking "for sa_len in struct sockaddr"""... $ac_c" 1>&6
|
||||||
echo "configure:6845: checking "for sun_len in struct sockaddr_un"" >&5
|
echo "configure:6845: checking "for sa_len in struct sockaddr"" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_c_sun_len'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sa_len'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
|
@ -6850,25 +6850,62 @@ else
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
static struct sockaddr addr; addr.sa_len = 1
|
||||||
|
; return 0; }
|
||||||
|
EOF
|
||||||
|
if { (eval echo configure:6859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
|
rm -rf conftest*
|
||||||
|
ac_cv_c_sockaddr_sa_len="yes"
|
||||||
|
else
|
||||||
|
echo "configure: failed program was:" >&5
|
||||||
|
cat conftest.$ac_ext >&5
|
||||||
|
rm -rf conftest*
|
||||||
|
ac_cv_c_sockaddr_sa_len="no"
|
||||||
|
fi
|
||||||
|
rm -f conftest*
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$ac_t""$ac_cv_c_sockaddr_sa_len" 1>&6
|
||||||
|
if test "$ac_cv_c_sockaddr_sa_len" = "yes"
|
||||||
|
then
|
||||||
|
cat >> confdefs.h <<\EOF
|
||||||
|
#define HAVE_SOCKADDR_SA_LEN 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo $ac_n "checking "for sun_len in struct sockaddr_un"""... $ac_c" 1>&6
|
||||||
|
echo "configure:6882: checking "for sun_len in struct sockaddr_un"" >&5
|
||||||
|
if eval "test \"`echo '$''{'ac_cv_c_sockaddr_sun_len'+set}'`\" = set"; then
|
||||||
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
else
|
||||||
|
cat > conftest.$ac_ext <<EOF
|
||||||
|
#line 6887 "configure"
|
||||||
|
#include "confdefs.h"
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
int main() {
|
int main() {
|
||||||
static struct sockaddr_un addr; addr.sun_len = 1
|
static struct sockaddr_un addr; addr.sun_len = 1
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:6859: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:6896: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_c_sun_len="yes"
|
ac_cv_c_sockaddr_sun_len="yes"
|
||||||
else
|
else
|
||||||
echo "configure: failed program was:" >&5
|
echo "configure: failed program was:" >&5
|
||||||
cat conftest.$ac_ext >&5
|
cat conftest.$ac_ext >&5
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_c_sun_len="no"
|
ac_cv_c_sockaddr_sun_len="no"
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
rm -f conftest*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$ac_t""$ac_cv_c_sun_len" 1>&6
|
echo "$ac_t""$ac_cv_c_sockaddr_sun_len" 1>&6
|
||||||
if test "$ac_cv_c_sun_len" = "yes"
|
if test "$ac_cv_c_sockaddr_sun_len" = "yes"
|
||||||
then
|
then
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define HAVE_SOCKADDR_SUN_LEN 1
|
#define HAVE_SOCKADDR_SUN_LEN 1
|
||||||
|
@ -6878,12 +6915,12 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6
|
echo $ac_n "checking "whether we need to define __i386__"""... $ac_c" 1>&6
|
||||||
echo "configure:6882: checking "whether we need to define __i386__"" >&5
|
echo "configure:6919: checking "whether we need to define __i386__"" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_cpp_def_i386'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 6887 "configure"
|
#line 6924 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#if (defined(i386) || defined(__i386)) && !defined(__i386__)
|
#if (defined(i386) || defined(__i386)) && !defined(__i386__)
|
||||||
yes
|
yes
|
||||||
|
|
18
configure.in
18
configure.in
|
@ -1154,14 +1154,26 @@ then
|
||||||
AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])
|
AC_DEFINE(HAVE_MSGHDR_ACCRIGHTS, 1, [Define if struct msghdr contains msg_accrights])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dnl *** Check for the sa_len member in struct sockaddr
|
||||||
|
|
||||||
|
AC_CACHE_CHECK("for sa_len in struct sockaddr", ac_cv_c_sockaddr_sa_len,
|
||||||
|
AC_TRY_COMPILE([#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
], [static struct sockaddr addr; addr.sa_len = 1],
|
||||||
|
ac_cv_c_sockaddr_sa_len="yes", ac_cv_c_sockaddr_sa_len="no"))
|
||||||
|
if test "$ac_cv_c_sockaddr_sa_len" = "yes"
|
||||||
|
then
|
||||||
|
AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Define if struct sockaddr contains sa_len])
|
||||||
|
fi
|
||||||
|
|
||||||
dnl *** Check for the sun_len member in struct sockaddr_un
|
dnl *** Check for the sun_len member in struct sockaddr_un
|
||||||
|
|
||||||
AC_CACHE_CHECK("for sun_len in struct sockaddr_un", ac_cv_c_sun_len,
|
AC_CACHE_CHECK("for sun_len in struct sockaddr_un", ac_cv_c_sockaddr_sun_len,
|
||||||
AC_TRY_COMPILE([#include <sys/types.h>
|
AC_TRY_COMPILE([#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/un.h>], [static struct sockaddr_un addr; addr.sun_len = 1],
|
#include <sys/un.h>], [static struct sockaddr_un addr; addr.sun_len = 1],
|
||||||
ac_cv_c_sun_len="yes", ac_cv_c_sun_len="no"))
|
ac_cv_c_sockaddr_sun_len="yes", ac_cv_c_sockaddr_sun_len="no"))
|
||||||
if test "$ac_cv_c_sun_len" = "yes"
|
if test "$ac_cv_c_sockaddr_sun_len" = "yes"
|
||||||
then
|
then
|
||||||
AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])
|
AC_DEFINE(HAVE_SOCKADDR_SUN_LEN, 1, [Define if struct sockaddr_un contains sun_len])
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -105,7 +105,7 @@ RPC_STATUS WINAPI UuidCreate(UUID *Uuid)
|
||||||
* However, under earlier systems, sa_len isn't present, so
|
* However, under earlier systems, sa_len isn't present, so
|
||||||
* the size is just sizeof(struct ifreq)
|
* the size is just sizeof(struct ifreq)
|
||||||
*/
|
*/
|
||||||
#ifdef HAVE_SA_LEN
|
#ifdef HAVE_SOCKADDR_SA_LEN
|
||||||
# ifndef max
|
# ifndef max
|
||||||
# define max(a,b) ((a) > (b) ? (a) : (b))
|
# define max(a,b) ((a) > (b) ? (a) : (b))
|
||||||
# endif
|
# endif
|
||||||
|
@ -113,8 +113,8 @@ RPC_STATUS WINAPI UuidCreate(UUID *Uuid)
|
||||||
sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
|
sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
|
||||||
# else
|
# else
|
||||||
# define ifreq_size(i) sizeof(struct ifreq)
|
# define ifreq_size(i) sizeof(struct ifreq)
|
||||||
# endif /* HAVE_SA_LEN */
|
# endif /* defined(HAVE_SOCKADDR_SA_LEN) */
|
||||||
|
|
||||||
sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
|
||||||
if (sd < 0) {
|
if (sd < 0) {
|
||||||
/* if we can't open a socket, just use random numbers */
|
/* if we can't open a socket, just use random numbers */
|
||||||
|
@ -143,7 +143,7 @@ sizeof((i).ifr_name)+(i).ifr_addr.sa_len)
|
||||||
} else {
|
} else {
|
||||||
/* loop through the interfaces, looking for a valid one */
|
/* loop through the interfaces, looking for a valid one */
|
||||||
n = ifc.ifc_len;
|
n = ifc.ifc_len;
|
||||||
for (i = 0; i < n; i+= ifreq_size(*ifr) ) {
|
for (i = 0; i < n; i+= ifreq_size(ifr) ) {
|
||||||
ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i);
|
ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i);
|
||||||
strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ);
|
strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ);
|
||||||
/* try to get the address for this interface */
|
/* try to get the address for this interface */
|
||||||
|
|
|
@ -520,6 +520,9 @@
|
||||||
/* Define if struct msghdr contains msg_accrights */
|
/* Define if struct msghdr contains msg_accrights */
|
||||||
#undef HAVE_MSGHDR_ACCRIGHTS
|
#undef HAVE_MSGHDR_ACCRIGHTS
|
||||||
|
|
||||||
|
/* Define if struct sockaddr contains sa_len */
|
||||||
|
#undef HAVE_SOCKADDR_SA_LEN
|
||||||
|
|
||||||
/* Define if struct sockaddr_un contains sun_len */
|
/* Define if struct sockaddr_un contains sun_len */
|
||||||
#undef HAVE_SOCKADDR_SUN_LEN
|
#undef HAVE_SOCKADDR_SUN_LEN
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue