From: Mark Andrews Date: Thu, 11 Jan 2018 05:19:00 +0000 (+1100) Subject: memset the remainder of sendcmsgbuf to 0 in a attempt to silence valgrind; msg->msg_c... X-Git-Tag: v9.13.0~278 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=2fca8cbdffe1e73dae12ed0fe727d0be5a8de14d;p=thirdparty%2Fbind9.git memset the remainder of sendcmsgbuf to 0 in a attempt to silence valgrind; msg->msg_control was not being set when it should have been; be consistent when setting msg->msg_control --- diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 2bf3e08a0fc..6ff16792ca2 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -1525,9 +1525,9 @@ build_msghdr_send(isc__socket_t *sock, isc_socketevent_t *dev, "sendto pktinfo data, ifindex %u", dev->pktinfo.ipi6_ifindex); + msg->msg_control = (void *)sock->sendcmsgbuf; msg->msg_controllen = cmsg_space(sizeof(struct in6_pktinfo)); INSIST(msg->msg_controllen <= sock->sendcmsgbuflen); - msg->msg_control = (void *)sock->sendcmsgbuf; cmsgp = (struct cmsghdr *)sock->sendcmsgbuf; cmsgp->cmsg_level = IPPROTO_IPV6; @@ -1546,6 +1546,7 @@ build_msghdr_send(isc__socket_t *sock, isc_socketevent_t *dev, cmsgp = (struct cmsghdr *)(sock->sendcmsgbuf + msg->msg_controllen); + msg->msg_control = (void *)sock->sendcmsgbuf; msg->msg_controllen += cmsg_space(sizeof(use_min_mtu)); INSIST(msg->msg_controllen <= sock->sendcmsgbuflen); @@ -1631,6 +1632,12 @@ build_msghdr_send(isc__socket_t *sock, isc_socketevent_t *dev, sock->dscp = dscp; } #endif + if (msg->msg_controllen != 0 && + msg->msg_controllen < sock->sendcmsgbuflen) + { + memset(sock->sendcmsgbuf + msg->msg_controllen, 0, + sock->sendcmsgbuflen - msg->msg_controllen); + } } #endif /* USE_CMSG */ #else /* ISC_NET_BSD44MSGHDR */