net.c: fix ifdef UCRED madness
authorAndre <maan@p133.(none)>
Sun, 30 Apr 2006 00:33:30 +0000 (02:33 +0200)
committerAndre <maan@p133.(none)>
Sun, 30 Apr 2006 00:33:30 +0000 (02:33 +0200)
simply use ordinary recv_buffer()/send_buffer() in case ucred is
not available.

net.c

diff --git a/net.c b/net.c
index 0aaa428df08a49ed7cc7a60b6c050563425e5def..5b754111ed54e892a5f6f0c26aa554414d3bfca1 100644 (file)
--- a/net.c
+++ b/net.c
@@ -28,12 +28,6 @@ extern void (*crypt_function_recv)(unsigned long len, const unsigned char *indat
 extern void (*crypt_function_send)(unsigned long len, const unsigned char *indata, unsigned char *outdata);
 
 
-#ifndef HAVE_UCRED
-       struct ucred {
-       uid_t uid, pid, gid;
-};
-#endif /* HAVE_UCRED */
-
 /**
  * initialize a struct sockaddr_in
  * @param addr A pointer to the struct to be initialized
@@ -338,6 +332,19 @@ int create_pf_socket(const char *name, struct sockaddr_un *unix_addr, int mode)
        return fd;
 }
 
+#ifndef HAVE_UCRED
+       struct ucred {
+       uid_t uid, pid, gid;
+};
+ssize_t send_cred_buffer(int sock, char *buf)
+{
+       return send_buffer(sock, buf);
+}
+int recv_cred_buffer(int fd, char *buf, size_t size)
+{
+       return recv_buffer(fd, buf, size) > 0? 1 : -E_RECVMSG;
+}
+#else HAVE_UCRED
 /**
  * send NULL terminated buffer and Unix credentials of the current process
  *
@@ -370,7 +377,6 @@ ssize_t send_cred_buffer(int sock, char *buf)
        msg.msg_iovlen = 1;
        msg.msg_control = control;
        msg.msg_controllen = sizeof(control);
-#ifdef HAVE_UCRED
        /* attach the ucred struct */
        cmsg = CMSG_FIRSTHDR(&msg);
        cmsg->cmsg_level = SOL_SOCKET;
@@ -378,7 +384,6 @@ ssize_t send_cred_buffer(int sock, char *buf)
        cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred));
        *(struct ucred *)CMSG_DATA(cmsg) = c;
        msg.msg_controllen = cmsg->cmsg_len;
-#endif
        ret = sendmsg(sock, &msg, 0);
        if (ret  < 0)
                ret = -E_SENDMSG;
@@ -415,9 +420,7 @@ int recv_cred_buffer(int fd, char *buf, size_t size)
        int yes = 1;
        struct ucred cred;
 
-#ifdef HAVE_UCRED
        setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &yes, sizeof(int));
-#endif
        memset(&msg, 0, sizeof(msg));
        memset(buf, 0, size);
        iov.iov_base = buf;
@@ -428,7 +431,6 @@ int recv_cred_buffer(int fd, char *buf, size_t size)
        msg.msg_controllen = sizeof(control);
        if (recvmsg(fd, &msg, 0) < 0)
                return -E_RECVMSG;
-#ifdef HAVE_UCRED
        result = -E_SCM_CREDENTIALS;
        cmsg = CMSG_FIRSTHDR(&msg);
        while (cmsg) {
@@ -445,9 +447,9 @@ int recv_cred_buffer(int fd, char *buf, size_t size)
                        }
                cmsg = CMSG_NXTHDR(&msg, cmsg);
        }
-#endif
        return result;
 }
+#endif /* HAVE_UCRED */
 
 /** how many pending connections queue will hold */
 #define BACKLOG 10