]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
memset the remainder of sendcmsgbuf to 0 in a attempt to silence valgrind; msg->msg_c...
authorMark Andrews <marka@isc.org>
Thu, 11 Jan 2018 05:19:00 +0000 (16:19 +1100)
committerMark Andrews <marka@isc.org>
Thu, 11 Jan 2018 05:19:00 +0000 (16:19 +1100)
lib/isc/unix/socket.c

index 2bf3e08a0fc373f4d41083d9d499dee412f8c46c..6ff16792ca2147c189f519bbee559992688fce0d 100644 (file)
@@ -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 */