mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-21 15:19:34 -05:00
replace struct msghdr macros
This commit is contained in:
parent
d9e8e3952c
commit
f799a2e4ba
6 changed files with 182 additions and 84 deletions
|
|
@ -1261,31 +1261,7 @@ AC_DEFUN([OL_SASL_COMPAT],
|
||||||
], [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])])
|
], [ol_cv_sasl_compat=yes], [ol_cv_sasl_compat=no])])
|
||||||
])
|
])
|
||||||
dnl ====================================================================
|
dnl ====================================================================
|
||||||
dnl check for msg_accrights in msghdr
|
dnl check for SSL compatibility
|
||||||
AC_DEFUN([OL_MSGHDR_MSG_ACCRIGHTS],
|
|
||||||
[AC_CACHE_CHECK(for msg_accrights in msghdr, ol_cv_msghdr_msg_accrights,
|
|
||||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
|
||||||
[[struct msghdr m; m.msg_accrightslen=0]])],
|
|
||||||
[ol_cv_msghdr_msg_accrights=yes],
|
|
||||||
[ol_cv_msghdr_msg_accrights=no])])
|
|
||||||
if test $ol_cv_msghdr_msg_accrights = "yes" ; then
|
|
||||||
AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS,1,
|
|
||||||
[define if struct msghdr has msg_accrights])
|
|
||||||
fi
|
|
||||||
])dnl
|
|
||||||
dnl ====================================================================
|
|
||||||
dnl check for cmsghdr
|
|
||||||
AC_DEFUN([OL_MSGHDR_MSG_CONTROL],
|
|
||||||
[AC_CACHE_CHECK(for msg_control in msghdr, ol_cv_msghdr_msg_control,
|
|
||||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
|
||||||
[[struct msghdr m; m.msg_control=(struct cmsghdr *)0]])],
|
|
||||||
[ol_cv_msghdr_msg_control=yes],
|
|
||||||
[ol_cv_msghdr_msg_control=no])])
|
|
||||||
if test $ol_cv_msghdr_msg_control = "yes" ; then
|
|
||||||
AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
|
|
||||||
[define if struct msghdr has msg_control])
|
|
||||||
fi
|
|
||||||
])dnl
|
|
||||||
AC_DEFUN([OL_SSL_COMPAT],
|
AC_DEFUN([OL_SSL_COMPAT],
|
||||||
[AC_CACHE_CHECK([OpenSSL library version (CRL checking capability)], [ol_cv_ssl_crl_compat],[
|
[AC_CACHE_CHECK([OpenSSL library version (CRL checking capability)], [ol_cv_ssl_crl_compat],[
|
||||||
AC_EGREP_CPP(__ssl_compat,[
|
AC_EGREP_CPP(__ssl_compat,[
|
||||||
|
|
|
||||||
182
configure
vendored
182
configure
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# From configure.in OpenLDAP: pkg/ldap/configure.in.
|
# From configure.in OpenLDAP: pkg/ldap/configure.in,v 1.586.2.15 2005/08/12 22:48:41 kurt Exp .
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.59.
|
# Generated by GNU Autoconf 2.59.
|
||||||
#
|
#
|
||||||
|
|
@ -51671,9 +51671,9 @@ if test "$ac_cv_func_getopt" != yes; then
|
||||||
LIBSRCS="$LIBSRCS getopt.c"
|
LIBSRCS="$LIBSRCS getopt.c"
|
||||||
fi
|
fi
|
||||||
if test "$ac_cv_func_getpeereid" != yes; then
|
if test "$ac_cv_func_getpeereid" != yes; then
|
||||||
echo "$as_me:$LINENO: checking for msg_accrights in msghdr" >&5
|
echo "$as_me:$LINENO: checking for struct msghdr.msg_accrightslen" >&5
|
||||||
echo $ECHO_N "checking for msg_accrights in msghdr... $ECHO_C" >&6
|
echo $ECHO_N "checking for struct msghdr.msg_accrightslen... $ECHO_C" >&6
|
||||||
if test "${ol_cv_msghdr_msg_accrights+set}" = set; then
|
if test "${ac_cv_member_struct_msghdr_msg_accrightslen+set}" = set; then
|
||||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
else
|
else
|
||||||
cat >conftest.$ac_ext <<_ACEOF
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
|
@ -51682,11 +51682,17 @@ _ACEOF
|
||||||
cat confdefs.h >>conftest.$ac_ext
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
cat >>conftest.$ac_ext <<_ACEOF
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
struct msghdr m; m.msg_accrightslen=0
|
static struct msghdr ac_aggr;
|
||||||
|
if (ac_aggr.msg_accrightslen)
|
||||||
|
return 0;
|
||||||
;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -51713,42 +51719,28 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
(exit $ac_status); }; }; then
|
(exit $ac_status); }; }; then
|
||||||
ol_cv_msghdr_msg_accrights=yes
|
ac_cv_member_struct_msghdr_msg_accrightslen=yes
|
||||||
else
|
else
|
||||||
echo "$as_me: failed program was:" >&5
|
echo "$as_me: failed program was:" >&5
|
||||||
sed 's/^/| /' conftest.$ac_ext >&5
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
ol_cv_msghdr_msg_accrights=no
|
|
||||||
fi
|
|
||||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
|
||||||
fi
|
|
||||||
echo "$as_me:$LINENO: result: $ol_cv_msghdr_msg_accrights" >&5
|
|
||||||
echo "${ECHO_T}$ol_cv_msghdr_msg_accrights" >&6
|
|
||||||
if test $ol_cv_msghdr_msg_accrights = "yes" ; then
|
|
||||||
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
|
||||||
#define HAVE_MSGHDR_MSG_ACCRIGHTS 1
|
|
||||||
_ACEOF
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$ac_cv_func_getpeereid" != yes; then
|
|
||||||
echo "$as_me:$LINENO: checking for msg_control in msghdr" >&5
|
|
||||||
echo $ECHO_N "checking for msg_control in msghdr... $ECHO_C" >&6
|
|
||||||
if test "${ol_cv_msghdr_msg_control+set}" = set; then
|
|
||||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
|
||||||
else
|
|
||||||
cat >conftest.$ac_ext <<_ACEOF
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
/* confdefs.h. */
|
/* confdefs.h. */
|
||||||
_ACEOF
|
_ACEOF
|
||||||
cat confdefs.h >>conftest.$ac_ext
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
cat >>conftest.$ac_ext <<_ACEOF
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
main ()
|
main ()
|
||||||
{
|
{
|
||||||
struct msghdr m; m.msg_control=(struct cmsghdr *)0
|
static struct msghdr ac_aggr;
|
||||||
|
if (sizeof ac_aggr.msg_accrightslen)
|
||||||
|
return 0;
|
||||||
;
|
;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -51775,23 +51767,145 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
ac_status=$?
|
ac_status=$?
|
||||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
(exit $ac_status); }; }; then
|
(exit $ac_status); }; }; then
|
||||||
ol_cv_msghdr_msg_control=yes
|
ac_cv_member_struct_msghdr_msg_accrightslen=yes
|
||||||
else
|
else
|
||||||
echo "$as_me: failed program was:" >&5
|
echo "$as_me: failed program was:" >&5
|
||||||
sed 's/^/| /' conftest.$ac_ext >&5
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
ol_cv_msghdr_msg_control=no
|
ac_cv_member_struct_msghdr_msg_accrightslen=no
|
||||||
fi
|
fi
|
||||||
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
fi
|
fi
|
||||||
echo "$as_me:$LINENO: result: $ol_cv_msghdr_msg_control" >&5
|
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
echo "${ECHO_T}$ol_cv_msghdr_msg_control" >&6
|
fi
|
||||||
if test $ol_cv_msghdr_msg_control = "yes" ; then
|
echo "$as_me:$LINENO: result: $ac_cv_member_struct_msghdr_msg_accrightslen" >&5
|
||||||
|
echo "${ECHO_T}$ac_cv_member_struct_msghdr_msg_accrightslen" >&6
|
||||||
|
if test $ac_cv_member_struct_msghdr_msg_accrightslen = yes; then
|
||||||
|
|
||||||
cat >>confdefs.h <<\_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
#define HAVE_MSGHDR_MSG_CONTROL 1
|
#define HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTSLEN 1
|
||||||
_ACEOF
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
|
||||||
|
echo "$as_me:$LINENO: checking for struct msghdr.msg_control" >&5
|
||||||
|
echo $ECHO_N "checking for struct msghdr.msg_control... $ECHO_C" >&6
|
||||||
|
if test "${ac_cv_member_struct_msghdr_msg_control+set}" = set; then
|
||||||
|
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||||
|
else
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
static struct msghdr ac_aggr;
|
||||||
|
if (ac_aggr.msg_control)
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext
|
||||||
|
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
|
(eval $ac_compile) 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -z "$ac_c_werror_flag"
|
||||||
|
|| test ! -s conftest.err'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } &&
|
||||||
|
{ ac_try='test -s conftest.$ac_objext'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
ac_cv_member_struct_msghdr_msg_control=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
cat >conftest.$ac_ext <<_ACEOF
|
||||||
|
/* confdefs.h. */
|
||||||
|
_ACEOF
|
||||||
|
cat confdefs.h >>conftest.$ac_ext
|
||||||
|
cat >>conftest.$ac_ext <<_ACEOF
|
||||||
|
/* end confdefs.h. */
|
||||||
|
$ac_includes_default
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
static struct msghdr ac_aggr;
|
||||||
|
if (sizeof ac_aggr.msg_control)
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
rm -f conftest.$ac_objext
|
||||||
|
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||||
|
(eval $ac_compile) 2>conftest.er1
|
||||||
|
ac_status=$?
|
||||||
|
grep -v '^ *+' conftest.er1 >conftest.err
|
||||||
|
rm -f conftest.er1
|
||||||
|
cat conftest.err >&5
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); } &&
|
||||||
|
{ ac_try='test -z "$ac_c_werror_flag"
|
||||||
|
|| test ! -s conftest.err'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; } &&
|
||||||
|
{ ac_try='test -s conftest.$ac_objext'
|
||||||
|
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||||
|
(eval $ac_try) 2>&5
|
||||||
|
ac_status=$?
|
||||||
|
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||||
|
(exit $ac_status); }; }; then
|
||||||
|
ac_cv_member_struct_msghdr_msg_control=yes
|
||||||
|
else
|
||||||
|
echo "$as_me: failed program was:" >&5
|
||||||
|
sed 's/^/| /' conftest.$ac_ext >&5
|
||||||
|
|
||||||
|
ac_cv_member_struct_msghdr_msg_control=no
|
||||||
|
fi
|
||||||
|
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
fi
|
||||||
|
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
fi
|
||||||
|
echo "$as_me:$LINENO: result: $ac_cv_member_struct_msghdr_msg_control" >&5
|
||||||
|
echo "${ECHO_T}$ac_cv_member_struct_msghdr_msg_control" >&6
|
||||||
|
if test $ac_cv_member_struct_msghdr_msg_control = yes; then
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_STRUCT_MSGHDR_MSG_CONTROL 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
16
configure.in
16
configure.in
|
|
@ -20,7 +20,7 @@ dnl ================================================================
|
||||||
dnl Configure.in for OpenLDAP
|
dnl Configure.in for OpenLDAP
|
||||||
AC_COPYRIGHT([[Copyright 1998-2005 The OpenLDAP Foundation. All rights reserved.
|
AC_COPYRIGHT([[Copyright 1998-2005 The OpenLDAP Foundation. All rights reserved.
|
||||||
Restrictions apply, see COPYRIGHT and LICENSE files.]])
|
Restrictions apply, see COPYRIGHT and LICENSE files.]])
|
||||||
AC_REVISION($OpenLDAP$)
|
AC_REVISION([$OpenLDAP$])
|
||||||
AC_INIT([OpenLDAP],,[http://www.openldap.org/its/])
|
AC_INIT([OpenLDAP],,[http://www.openldap.org/its/])
|
||||||
AC_CONFIG_SRCDIR(build/version.sh)dnl
|
AC_CONFIG_SRCDIR(build/version.sh)dnl
|
||||||
dnl ----------------------------------------------------------------
|
dnl ----------------------------------------------------------------
|
||||||
|
|
@ -2536,9 +2536,17 @@ if test "$ac_cv_func_getopt" != yes; then
|
||||||
LIBSRCS="$LIBSRCS getopt.c"
|
LIBSRCS="$LIBSRCS getopt.c"
|
||||||
fi
|
fi
|
||||||
if test "$ac_cv_func_getpeereid" != yes; then
|
if test "$ac_cv_func_getpeereid" != yes; then
|
||||||
OL_MSGHDR_MSG_ACCRIGHTS
|
AC_CHECK_MEMBERS([struct msghdr.msg_accrightslen],,,
|
||||||
if test "$ac_cv_func_getpeereid" != yes; then
|
[$ac_includes_default
|
||||||
OL_MSGHDR_MSG_CONTROL
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif])
|
||||||
|
if test "$ac_cv_member_struct_msghdr_msg_accrightslen" != yes; then
|
||||||
|
AC_CHECK_MEMBERS([struct msghdr.msg_control],,,
|
||||||
|
[$ac_includes_default
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif])
|
||||||
fi
|
fi
|
||||||
LIBSRCS="$LIBSRCS getpeereid.c"
|
LIBSRCS="$LIBSRCS getpeereid.c"
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -403,12 +403,6 @@
|
||||||
/* define this if you have mkversion */
|
/* define this if you have mkversion */
|
||||||
#undef HAVE_MKVERSION
|
#undef HAVE_MKVERSION
|
||||||
|
|
||||||
/* define if struct msghdr has msg_accrights */
|
|
||||||
#undef HAVE_MSGHDR_MSG_ACCRIGHTS
|
|
||||||
|
|
||||||
/* define if struct msghdr has msg_control */
|
|
||||||
#undef HAVE_MSGHDR_MSG_CONTROL
|
|
||||||
|
|
||||||
/* define if NDBM is available */
|
/* define if NDBM is available */
|
||||||
#undef HAVE_NDBM
|
#undef HAVE_NDBM
|
||||||
|
|
||||||
|
|
@ -658,6 +652,12 @@
|
||||||
/* Define to 1 if you have the `strtouq' function. */
|
/* Define to 1 if you have the `strtouq' function. */
|
||||||
#undef HAVE_STRTOUQ
|
#undef HAVE_STRTOUQ
|
||||||
|
|
||||||
|
/* Define to 1 if `msg_accrightslen' is member of `struct msghdr'. */
|
||||||
|
#undef HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTSLEN
|
||||||
|
|
||||||
|
/* Define to 1 if `msg_control' is member of `struct msghdr'. */
|
||||||
|
#undef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
|
|
||||||
/* Define to 1 if `pw_gecos' is member of `struct passwd'. */
|
/* Define to 1 if `pw_gecos' is member of `struct passwd'. */
|
||||||
#undef HAVE_STRUCT_PASSWD_PW_GECOS
|
#undef HAVE_STRUCT_PASSWD_PW_GECOS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -156,8 +156,8 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s)
|
||||||
|
|
||||||
#if !defined(HAVE_GETPEEREID) && \
|
#if !defined(HAVE_GETPEEREID) && \
|
||||||
!defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
|
!defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
|
||||||
defined(HAVE_SENDMSG) && (defined(HAVE_MSGHDR_MSG_ACCRIGHTS) || \
|
defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS) || \
|
||||||
defined(HAVE_MSGHDR_MSG_CONTROL))
|
defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL))
|
||||||
#define DO_SENDMSG
|
#define DO_SENDMSG
|
||||||
static const char abandonPDU[] = {LDAP_TAG_MESSAGE, 6,
|
static const char abandonPDU[] = {LDAP_TAG_MESSAGE, 6,
|
||||||
LDAP_TAG_MSGID, 1, 0, LDAP_REQ_ABANDON, 1, 0};
|
LDAP_TAG_MSGID, 1, 0, LDAP_REQ_ABANDON, 1, 0};
|
||||||
|
|
@ -195,7 +195,7 @@ sendcred:
|
||||||
/* Abandon, noop, has no reply */
|
/* Abandon, noop, has no reply */
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
struct msghdr msg = {0};
|
struct msghdr msg = {0};
|
||||||
# ifdef HAVE_MSGHDR_MSG_CONTROL
|
# ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
# ifndef CMSG_SPACE
|
# ifndef CMSG_SPACE
|
||||||
# define CMSG_SPACE(len) (_CMSG_ALIGN( sizeof(struct cmsghdr)) + _CMSG_ALIGN(len) )
|
# define CMSG_SPACE(len) (_CMSG_ALIGN( sizeof(struct cmsghdr)) + _CMSG_ALIGN(len) )
|
||||||
# endif
|
# endif
|
||||||
|
|
@ -207,14 +207,14 @@ sendcred:
|
||||||
unsigned char control[CMSG_SPACE(sizeof(int))];
|
unsigned char control[CMSG_SPACE(sizeof(int))];
|
||||||
} control_un;
|
} control_un;
|
||||||
struct cmsghdr *cmsg;
|
struct cmsghdr *cmsg;
|
||||||
# endif /* HAVE_MSGHDR_MSG_CONTROL */
|
# endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */
|
||||||
msg.msg_name = NULL;
|
msg.msg_name = NULL;
|
||||||
msg.msg_namelen = 0;
|
msg.msg_namelen = 0;
|
||||||
iov.iov_base = (char *) abandonPDU;
|
iov.iov_base = (char *) abandonPDU;
|
||||||
iov.iov_len = sizeof abandonPDU;
|
iov.iov_len = sizeof abandonPDU;
|
||||||
msg.msg_iov = &iov;
|
msg.msg_iov = &iov;
|
||||||
msg.msg_iovlen = 1;
|
msg.msg_iovlen = 1;
|
||||||
# ifdef HAVE_MSGHDR_MSG_CONTROL
|
# ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
msg.msg_control = control_un.control;
|
msg.msg_control = control_un.control;
|
||||||
msg.msg_controllen = sizeof( control_un.control );
|
msg.msg_controllen = sizeof( control_un.control );
|
||||||
msg.msg_flags = 0;
|
msg.msg_flags = 0;
|
||||||
|
|
@ -228,7 +228,7 @@ sendcred:
|
||||||
# else
|
# else
|
||||||
msg.msg_accrights = (char *)fds;
|
msg.msg_accrights = (char *)fds;
|
||||||
msg.msg_accrightslen = sizeof(int);
|
msg.msg_accrightslen = sizeof(int);
|
||||||
# endif /* HAVE_MSGHDR_MSG_CONTROL */
|
# endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */
|
||||||
sendmsg( s, &msg, 0 );
|
sendmsg( s, &msg, 0 );
|
||||||
close(fds[0]);
|
close(fds[0]);
|
||||||
close(fds[1]);
|
close(fds[1]);
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
|
#if !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && \
|
||||||
defined(HAVE_SENDMSG) && (defined(HAVE_MSGHDR_MSG_ACCRIGHTS) || \
|
defined(HAVE_SENDMSG) && (defined(HAVE_STRUCT_MSGHDR_MSG_ACCRIGHTS) || \
|
||||||
defined(HAVE_MSGHDR_MSG_CONTROL))
|
defined(HAVE_STRUCT_MSGHDR_MSG_CONTROL))
|
||||||
#define DO_SENDMSG
|
#define DO_SENDMSG
|
||||||
#ifdef HAVE_SYS_UIO_H
|
#ifdef HAVE_SYS_UIO_H
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
|
|
@ -77,7 +77,7 @@ int getpeereid( int s, uid_t *euid, gid_t *egid )
|
||||||
int err, fd[2];
|
int err, fd[2];
|
||||||
struct iovec iov;
|
struct iovec iov;
|
||||||
struct msghdr msg = {0};
|
struct msghdr msg = {0};
|
||||||
# ifdef HAVE_MSGHDR_MSG_CONTROL
|
# ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
# ifndef CMSG_SPACE
|
# ifndef CMSG_SPACE
|
||||||
# define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len))
|
# define CMSG_SPACE(len) (_CMSG_ALIGN(sizeof(struct cmsghdr)) + _CMSG_ALIGN(len))
|
||||||
# endif
|
# endif
|
||||||
|
|
@ -89,7 +89,7 @@ int getpeereid( int s, uid_t *euid, gid_t *egid )
|
||||||
unsigned char control[CMSG_SPACE(sizeof(int))];
|
unsigned char control[CMSG_SPACE(sizeof(int))];
|
||||||
} control_un;
|
} control_un;
|
||||||
struct cmsghdr *cmsg;
|
struct cmsghdr *cmsg;
|
||||||
# endif /* HAVE_MSGHDR_MSG_CONTROL */
|
# endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
msg.msg_name = NULL;
|
msg.msg_name = NULL;
|
||||||
|
|
@ -99,7 +99,7 @@ int getpeereid( int s, uid_t *euid, gid_t *egid )
|
||||||
iov.iov_len = sizeof dummy;
|
iov.iov_len = sizeof dummy;
|
||||||
msg.msg_iov = &iov;
|
msg.msg_iov = &iov;
|
||||||
msg.msg_iovlen = 1;
|
msg.msg_iovlen = 1;
|
||||||
# ifdef HAVE_MSGHDR_MSG_CONTROL
|
# ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
msg.msg_control = control_un.control;
|
msg.msg_control = control_un.control;
|
||||||
msg.msg_controllen = sizeof( control_un.control );
|
msg.msg_controllen = sizeof( control_un.control );
|
||||||
|
|
||||||
|
|
@ -118,12 +118,12 @@ int getpeereid( int s, uid_t *euid, gid_t *egid )
|
||||||
msg.msg_accrights = (char *)fd;
|
msg.msg_accrights = (char *)fd;
|
||||||
msg.msg_accrightslen = sizeof(fd);
|
msg.msg_accrightslen = sizeof(fd);
|
||||||
if( recvmsg( s, &msg, MSG_PEEK) >= 0 && msg.msg_accrightslen == sizeof(int) )
|
if( recvmsg( s, &msg, MSG_PEEK) >= 0 && msg.msg_accrightslen == sizeof(int) )
|
||||||
# endif /* HAVE_MSGHDR_MSG_CONTROL*/
|
# endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL*/
|
||||||
{
|
{
|
||||||
/* We must receive a valid descriptor, it must be a pipe,
|
/* We must receive a valid descriptor, it must be a pipe,
|
||||||
* and it must only be accessible by its owner.
|
* and it must only be accessible by its owner.
|
||||||
*/
|
*/
|
||||||
# ifdef HAVE_MSGHDR_MSG_CONTROL
|
# ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||||
fd[0] = (*(int *)CMSG_DATA( cmsg ));
|
fd[0] = (*(int *)CMSG_DATA( cmsg ));
|
||||||
# endif
|
# endif
|
||||||
err = fstat( fd[0], &st );
|
err = fstat( fd[0], &st );
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue