Fix: libcompat is now part of libcommon
[lttng-tools.git] / src / common / unix.c
index a87ce05ed581cc6cb1d14788956a6ca0d64cdb38..d37313c5aed87ee6600b1953ce6ba84a97d6f660 100644 (file)
@@ -441,8 +441,14 @@ ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
        struct cmsghdr *cmsg;
        size_t sizeof_fds = nb_fd * sizeof(int);
 
-       /* Account for the struct ucred cmsg in the buffer size */
-       char recv_buf[CMSG_SPACE(sizeof_fds) + CMSG_SPACE(sizeof(struct ucred))];
+#ifdef __linux__
+/* Account for the struct ucred cmsg in the buffer size */
+#define LTTNG_SOCK_RECV_FDS_BUF_SIZE CMSG_SPACE(sizeof_fds) + CMSG_SPACE(sizeof(struct ucred))
+#else
+#define LTTNG_SOCK_RECV_FDS_BUF_SIZE CMSG_SPACE(sizeof_fds)
+#endif /* __linux__ */
+
+       char recv_buf[LTTNG_SOCK_RECV_FDS_BUF_SIZE];
        struct msghdr msg;
        char dummy;
 
@@ -490,11 +496,6 @@ ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
         * message.
         */
        for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
-               if (!cmsg) {
-                       fprintf(stderr, "Error: Invalid control message header\n");
-                       ret = -1;
-                       goto end;
-               }
                if (cmsg->cmsg_level != SOL_SOCKET) {
                        fprintf(stderr, "Error: The socket needs to be of type SOL_SOCKET\n");
                        ret = -1;
@@ -517,6 +518,7 @@ ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
                        ret = sizeof_fds;
                        goto end;
                }
+#ifdef __linux__
                if (cmsg->cmsg_type == SCM_CREDENTIALS) {
                        /*
                         * Expect credentials to be sent when expecting fds even
@@ -525,6 +527,7 @@ ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd)
                         */
                        ret = -1;
                }
+#endif /* __linux__ */
        }
 end:
        return ret;
This page took 0.025666 seconds and 5 git commands to generate.