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;
* 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;
ret = sizeof_fds;
goto end;
}
+#ifdef __linux__
if (cmsg->cmsg_type == SCM_CREDENTIALS) {
/*
* Expect credentials to be sent when expecting fds even
* if no credential were include in the send(). The
* kernel adds them...
*/
- fprintf(stderr, "Received creds... continuing\n");
ret = -1;
}
+#endif /* __linux__ */
}
end:
return ret;