From 20b22895546a3e7fb7760940599dfb1e29a00777 Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Fri, 28 Jun 2019 11:25:32 +0200 Subject: [PATCH] Clear CMSG_SPACE(sizeof(data)) in cmsghdr to appease valgrind. --- pdns/misc.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) 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 } -- 2.47.2