mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-19 21:27:57 +00:00
Fix calculated size of struct sockaddr_un on OSX #104
This commit is contained in:
parent
c78ee668d5
commit
7f5f71aec8
@ -164,7 +164,7 @@ static void recv_packet(int fd, struct network *network, struct peer *destinatio
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
unicast_addr.addrlen=sizeof unicast_addr.local.sun_family + strlen(unicast_addr.local.sun_path) + 1;
|
unicast_addr.addrlen=sizeof unicast_addr.local - sizeof unicast_addr.local.sun_path + strlen(unicast_addr.local.sun_path) + 1;
|
||||||
|
|
||||||
peer = emalloc_zero(sizeof(struct peer));
|
peer = emalloc_zero(sizeof(struct peer));
|
||||||
if (!peer) {
|
if (!peer) {
|
||||||
|
6
socket.c
6
socket.c
@ -55,7 +55,7 @@ int _make_local_sockaddr(struct __sourceloc __whence, struct socket_address *add
|
|||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (!r)
|
if (!r)
|
||||||
return WHY("socket name overflow");
|
return WHY("socket name overflow");
|
||||||
addr->addrlen=sizeof addr->local.sun_family + strlen(addr->local.sun_path) + 1;
|
addr->addrlen=sizeof addr->local - sizeof addr->local.sun_path + strlen(addr->local.sun_path) + 1;
|
||||||
// TODO perform real path transformation in making the serval instance path
|
// TODO perform real path transformation in making the serval instance path
|
||||||
// if (real_sockaddr(addr, addr) == -1)
|
// if (real_sockaddr(addr, addr) == -1)
|
||||||
// return -1;
|
// return -1;
|
||||||
@ -292,14 +292,14 @@ ssize_t _recv_message_frag(struct __sourceloc __whence, int fd, struct socket_ad
|
|||||||
struct cmsghdr cmsgs[16];
|
struct cmsghdr cmsgs[16];
|
||||||
struct msghdr msg = {
|
struct msghdr msg = {
|
||||||
.msg_name = (void *)&address->addr,
|
.msg_name = (void *)&address->addr,
|
||||||
.msg_namelen = address->addrlen,
|
.msg_namelen = sizeof(address->raw),
|
||||||
.msg_iov = data->iov,
|
.msg_iov = data->iov,
|
||||||
.msg_iovlen = data->fragment_count,
|
.msg_iovlen = data->fragment_count,
|
||||||
.msg_control = cmsgs,
|
.msg_control = cmsgs,
|
||||||
.msg_controllen = sizeof cmsgs,
|
.msg_controllen = sizeof cmsgs,
|
||||||
.msg_flags = 0
|
.msg_flags = 0
|
||||||
};
|
};
|
||||||
bzero(&address->addr, address->addrlen);
|
bzero(address, sizeof(struct socket_address));
|
||||||
ssize_t ret = recvmsg(fd, &msg, 0);
|
ssize_t ret = recvmsg(fd, &msg, 0);
|
||||||
if (ret == -1 && errno != EAGAIN && errno != EWOULDBLOCK)
|
if (ret == -1 && errno != EAGAIN && errno != EWOULDBLOCK)
|
||||||
WHYF_perror("recvmsg(%d,{name=%p,namelen=%u,iov=%s,control=%p,controllen=%u},0)",
|
WHYF_perror("recvmsg(%d,{name=%p,namelen=%u,iov=%s,control=%p,controllen=%u},0)",
|
||||||
|
Loading…
Reference in New Issue
Block a user