mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3: lib, s3: modules: Fix compilation on Solaris.
Based on work from YOUZHONG YANG <youzhong@gmail.com>. Code needs fixing when HAVE_STRUCT_MSGHDR_MSG_CONTROL is not defined. Also Solaris doesn't have msg_flags field (which we set to zero anyway, so if we initialize the entire struct to zero, we never need to refer to it). https://bugzilla.samba.org/show_bug.cgi?id=10849 Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org> Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org> Autobuild-Date(master): Mon Oct 6 12:33:36 CEST 2014 on sn-devel-104
This commit is contained in:
parent
7366204845
commit
57bcb8055e
@ -477,7 +477,7 @@ static int queue_msg(struct unix_dgram_send_queue *q,
|
||||
struct unix_dgram_msg *msg;
|
||||
ssize_t data_len;
|
||||
uint8_t *data_buf;
|
||||
size_t msglen;
|
||||
size_t msglen = sizeof(struct unix_dgram_msg);
|
||||
int i;
|
||||
size_t tmp;
|
||||
int ret = -1;
|
||||
@ -487,6 +487,13 @@ static int queue_msg(struct unix_dgram_send_queue *q,
|
||||
size_t cmsg_len = CMSG_LEN(fds_size);
|
||||
size_t cmsg_space = CMSG_SPACE(fds_size);
|
||||
char *cmsg_buf;
|
||||
|
||||
/*
|
||||
* Note: No need to check for overflow here,
|
||||
* since cmsg will store <= INT8_MAX fds.
|
||||
*/
|
||||
msglen += cmsg_space;
|
||||
|
||||
#endif /* HAVE_STRUCT_MSGHDR_MSG_CONTROL */
|
||||
|
||||
if (num_fds > INT8_MAX) {
|
||||
@ -499,14 +506,6 @@ static int queue_msg(struct unix_dgram_send_queue *q,
|
||||
}
|
||||
#endif
|
||||
|
||||
msglen = sizeof(struct unix_dgram_msg);
|
||||
|
||||
/*
|
||||
* Note: No need to check for overflow here,
|
||||
* since cmsg will store <= INT8_MAX fds.
|
||||
*/
|
||||
msglen += cmsg_space;
|
||||
|
||||
data_len = iov_buflen(iov, iovlen);
|
||||
if (data_len == -1) {
|
||||
return EINVAL;
|
||||
@ -593,7 +592,9 @@ static int queue_msg(struct unix_dgram_send_queue *q,
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
#ifdef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||
close_fd_array(fds_copy, num_fds);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -157,6 +157,7 @@ static ssize_t read_fd(int fd, void *ptr, size_t nbytes, int *recvfd)
|
||||
#ifndef HAVE_STRUCT_MSGHDR_MSG_CONTROL
|
||||
int newfd;
|
||||
|
||||
ZERO_STRUCT(msg);
|
||||
msg.msg_accrights = (caddr_t) &newfd;
|
||||
msg.msg_accrightslen = sizeof(int);
|
||||
#else
|
||||
@ -167,13 +168,15 @@ static ssize_t read_fd(int fd, void *ptr, size_t nbytes, int *recvfd)
|
||||
} control_un;
|
||||
struct cmsghdr *cmptr;
|
||||
|
||||
ZERO_STRUCT(msg);
|
||||
ZERO_STRUCT(control_un);
|
||||
|
||||
msg.msg_control = control_un.control;
|
||||
msg.msg_controllen = sizeof(control_un.control);
|
||||
#endif
|
||||
|
||||
msg.msg_name = NULL;
|
||||
msg.msg_namelen = 0;
|
||||
msg.msg_flags = 0;
|
||||
|
||||
iov[0].iov_base = (void *)ptr;
|
||||
iov[0].iov_len = nbytes;
|
||||
|
Loading…
Reference in New Issue
Block a user