]> git.sur5r.net Git - openldap/commitdiff
Don't send extra messages, will cause interoperability problems
authorKurt Zeilenga <kurt@openldap.org>
Sat, 1 Mar 2003 19:47:04 +0000 (19:47 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 1 Mar 2003 19:47:04 +0000 (19:47 +0000)
with versions not built to receive these extra messages.
Likewise in reverse.

libraries/libldap/os-local.c
libraries/liblutil/getpeereid.c

index 0e03335de6f54e71137e09ad80df111ee998b80e..833328fd9001442d0cc4677bb5e3b58f829a0bfb 100644 (file)
@@ -131,10 +131,6 @@ ldap_pvt_is_socket_ready(LDAP *ld, int s)
 }
 #undef TRACE
 
-#if !defined(HAVE_GETPEEREID) && !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && defined(HAVE_SENDMSG)
-#define DO_SENDMSG
-#endif
-
 static int
 ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
 {
@@ -159,25 +155,6 @@ ldap_pvt_connect(LDAP *ld, ber_socket_t s, struct sockaddr_un *sa, int async)
                if ( ldap_pvt_ndelay_off(ld, s) == -1 ) {
                        return ( -1 );
                }
-#ifdef DO_SENDMSG
-       /* Send a dummy message with access rights. Remote side will
-        * obtain our uid/gid by fstat'ing this descriptor.
-        */
-sendcred:       {
-                       int fds[2];
-                       struct iovec iov = {(char *)fds, sizeof(int)};
-                       struct msghdr msg = {0};
-                       if (pipe(fds) == 0) {
-                               msg.msg_iov = &iov;
-                               msg.msg_iovlen = 1;
-                               msg.msg_accrights = (char *)fds;
-                               msg.msg_accrightslen = sizeof(int);
-                               sendmsg( s, &msg, 0 );
-                               close(fds[0]);
-                               close(fds[1]);
-                       }
-               }
-#endif
                return ( 0 );
        }
 
index f8f6e22c2c8978869a2bd58dd82f9283dab1fc0d..15d908f1ead731419de1179fb18f0de0a6fb426a 100644 (file)
 #include <sys/ucred.h>
 #endif
 
-#if !defined(SO_PEERCRED) && !defined(LOCAL_PEERCRED) && defined(HAVE_SENDMSG)
-#define DO_SENDMSG
-#include <sys/stat.h>
-#endif
-
 int getpeereid( int s, uid_t *euid, gid_t *egid )
 {
 #ifdef LDAP_PF_LOCAL
@@ -51,31 +46,6 @@ int getpeereid( int s, uid_t *euid, gid_t *egid )
                *egid = peercred.cr_gid;
                return 0;
        }
-#elif defined( DO_SENDMSG )
-       int dummy, fd[2];
-       struct iovec iov = {(char *)&dummy, sizeof(dummy)};
-       struct msghdr msg = {0};
-       struct stat st;
-       msg.msg_iov = &iov;
-       msg.msg_iovlen = 1;
-       msg.msg_accrights = (char *)fd;
-       msg.msg_accrightslen = sizeof(fd);
-       if( recvmsg( s, &msg, 0) >= 0 && msg.msg_accrightslen == sizeof(int) )
-       {
-               /* We must receive a valid descriptor, it must be a pipe,
-                * and it must only be accessible by its owner.
-                */
-               dummy = fstat( fd[0], &st );
-               close(fd[0]);
-               if( dummy == 0 && S_ISFIFO(st.st_mode) &&
-                       ((st.st_mode & (S_IRWXG|S_IRWXO)) == 0))
-               {
-                       *euid = st.st_uid;
-                       *egid = st.st_gid;
-                       return 0;
-               }
-       }
-#endif
 #endif
 
        return -1;