From: Otto Moerbeek Date: Fri, 28 Jun 2019 09:25:32 +0000 (+0200) Subject: Clear CMSG_SPACE(sizeof(data)) in cmsghdr to appease valgrind. X-Git-Tag: dnsdist-1.4.0-rc1~84^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F7996%2Fhead;p=thirdparty%2Fpdns.git Clear CMSG_SPACE(sizeof(data)) in cmsghdr to appease valgrind. --- diff --git a/pdns/misc.cc b/pdns/misc.cc index 2686b0fc46..db7e780bff 100644 --- a/pdns/misc.cc +++ b/pdns/misc.cc @@ -901,7 +901,8 @@ void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf, const ComboAd cmsg->cmsg_len = CMSG_LEN(sizeof(*pkt)); pkt = (struct in6_pktinfo *) CMSG_DATA(cmsg); - memset(pkt, 0, sizeof(*pkt)); + // Include the padding to stop valgrind complaining about passing uninitialized data + memset(pkt, 0, CMSG_SPACE(sizeof(*pkt))); pkt->ipi6_addr = source->sin6.sin6_addr; pkt->ipi6_ifindex = itfIndex; } @@ -918,7 +919,8 @@ void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf, const ComboAd cmsg->cmsg_len = CMSG_LEN(sizeof(*pkt)); pkt = (struct in_pktinfo *) CMSG_DATA(cmsg); - memset(pkt, 0, sizeof(*pkt)); + // Include the padding to stop valgrind complaining about passing uninitialized data + memset(pkt, 0, CMSG_SPACE(sizeof(*pkt))); pkt->ipi_spec_dst = source->sin4.sin_addr; pkt->ipi_ifindex = itfIndex; #elif defined(IP_SENDSRCADDR) @@ -932,7 +934,9 @@ void addCMsgSrcAddr(struct msghdr* msgh, cmsgbuf_aligned* cmsgbuf, const ComboAd cmsg->cmsg_type = IP_SENDSRCADDR; cmsg->cmsg_len = CMSG_LEN(sizeof(*in)); + // Include the padding to stop valgrind complaining about passing uninitialized data in = (struct in_addr *) CMSG_DATA(cmsg); + memset(in, 0, CMSG_SPACE(sizeof(*in))); *in = source->sin4.sin_addr; #endif }