diff options
author | Tobias Brunner <tobias@strongswan.org> | 2013-09-10 13:40:16 +0200 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2013-09-10 13:42:59 +0200 |
commit | 4eb6149ae83a30e485644ce0a51d278f6afa908f (patch) | |
tree | 7b680a682659d6572212811f7a89e515f315b93b /src/libcharon/plugins/socket_default/socket_default_socket.c | |
parent | 7d938be9e986a24b2ce3a8e2557213ece3adcacd (diff) | |
download | strongswan-4eb6149ae83a30e485644ce0a51d278f6afa908f.tar.bz2 strongswan-4eb6149ae83a30e485644ce0a51d278f6afa908f.tar.xz |
sockets: Initialize the whole ancillary data buffer not only the actual struct
This avoids uninitialized bytes that Valgrind seems to notice otherwise.
Fixes #395.
Diffstat (limited to 'src/libcharon/plugins/socket_default/socket_default_socket.c')
-rw-r--r-- | src/libcharon/plugins/socket_default/socket_default_socket.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libcharon/plugins/socket_default/socket_default_socket.c b/src/libcharon/plugins/socket_default/socket_default_socket.c index 4139afe5a..3aa09bef8 100644 --- a/src/libcharon/plugins/socket_default/socket_default_socket.c +++ b/src/libcharon/plugins/socket_default/socket_default_socket.c @@ -445,6 +445,7 @@ METHOD(socket_t, sender, status_t, #elif defined(IP_SENDSRCADDR) char buf[CMSG_SPACE(sizeof(struct in_addr))]; #endif + memset(buf, 0, sizeof(buf)); msg.msg_control = buf; msg.msg_controllen = sizeof(buf); cmsg = CMSG_FIRSTHDR(&msg); @@ -453,7 +454,6 @@ METHOD(socket_t, sender, status_t, cmsg->cmsg_type = IP_PKTINFO; cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo)); pktinfo = (struct in_pktinfo*)CMSG_DATA(cmsg); - memset(pktinfo, 0, sizeof(struct in_pktinfo)); addr = &pktinfo->ipi_spec_dst; #elif defined(IP_SENDSRCADDR) cmsg->cmsg_type = IP_SENDSRCADDR; @@ -471,6 +471,7 @@ METHOD(socket_t, sender, status_t, struct in6_pktinfo *pktinfo; struct sockaddr_in6 *sin; + memset(buf, 0, sizeof(buf)); msg.msg_control = buf; msg.msg_controllen = sizeof(buf); cmsg = CMSG_FIRSTHDR(&msg); @@ -478,7 +479,6 @@ METHOD(socket_t, sender, status_t, cmsg->cmsg_type = IPV6_PKTINFO; cmsg->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo)); pktinfo = (struct in6_pktinfo*)CMSG_DATA(cmsg); - memset(pktinfo, 0, sizeof(struct in6_pktinfo)); sin = (struct sockaddr_in6*)src->get_sockaddr(src); memcpy(&pktinfo->ipi6_addr, &sin->sin6_addr, sizeof(struct in6_addr)); } |