goto end;
}
+ if (client->communication.inbound.bytes_to_receive == 0 &&
+ client->communication.inbound.fds_to_receive != 0) {
+ /* Only FDs left to receive. */
+ goto receive_fds;
+ }
+
offset = client->communication.inbound.payload.buffer.size -
client->communication.inbound.bytes_to_receive;
if (client->communication.inbound.expect_creds) {
goto end;
}
+receive_fds:
assert(client->communication.inbound.bytes_to_receive == 0);
/* Receive fds. */
ssize_t ret = -1;
size_t len_last;
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+
memset(&msg, 0, sizeof(msg));
iov[0].iov_base = buf;
struct iovec iov[1];
ssize_t ret;
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+
memset(&msg, 0, sizeof(msg));
iov[0].iov_base = buf;
struct iovec iov[1];
ssize_t ret;
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+
memset(&msg, 0, sizeof(msg));
iov[0].iov_base = (void *) buf;
struct iovec iov[1];
ssize_t ret;
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+
memset(&msg, 0, sizeof(msg));
iov[0].iov_base = (void *) buf;
char tmp[CMSG_SPACE(sizeof_fds)];
char dummy = 0;
+ assert(sock);
+ assert(fds);
+ assert(nb_fd > 0);
+
memset(&msg, 0, sizeof(msg));
memset(tmp, 0, sizeof(tmp));
char tmp[CMSG_SPACE(sizeof_fds)];
char dummy = 0;
+ assert(sock);
+ assert(fds);
+ assert(nb_fd > 0);
+
memset(&msg, 0, sizeof(msg));
memset(tmp, 0, sizeof(tmp));
struct msghdr msg;
char dummy;
+ assert(sock);
+ assert(fds);
+ assert(nb_fd > 0);
+
memset(&msg, 0, sizeof(msg));
/* Prepare to receive the structures */
int default_value = -1;
struct lttng_dynamic_array raw_fds;
+ assert(sock);
+ assert(payload);
+ assert(nb_fd > 0);
+
lttng_dynamic_array_init(&raw_fds, sizeof(int), close_raw_fd);
for (i = 0; i < nb_fd; i++) {
struct cmsghdr *cmsg;
size_t sizeof_fds = nb_fd * sizeof(int);
+ assert(sock);
+ assert(fds);
+ assert(nb_fd > 0);
+
#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))
memset(&msg, 0, sizeof(msg));
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+
iov[0].iov_base = (void *) buf;
iov[0].iov_len = len;
msg.msg_iov = iov;
char anc_buf[CMSG_SPACE(sizeof_cred)];
#endif /* __linux__ */
- memset(&msg, 0, sizeof(msg));
+ assert(sock);
+ assert(buf);
+ assert(len > 0);
+ assert(creds);
- /* Not allowed */
- if (creds == NULL) {
- ret = -1;
- goto end;
- }
+ memset(&msg, 0, sizeof(msg));
/* Prepare to receive the structures */
iov[0].iov_base = buf;