From d11e02635757605ae29e5a15620b9e217baacee3 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. (cherry picked from commit 20b22895546a3e7fb7760940599dfb1e29a00777) --- pdns/misc.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pdns/misc.cc b/pdns/misc.cc index 1f90bbcbd..a051b7e20 100644 --- a/pdns/misc.cc +++ b/pdns/misc.cc @@ -900,7 +900,8 @@ void addCMsgSrcAddr(struct msghdr* msgh, void* cmsgbuf, const ComboAddress* sour 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; } @@ -917,7 +918,8 @@ void addCMsgSrcAddr(struct msghdr* msgh, void* cmsgbuf, const ComboAddress* sour 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) @@ -931,7 +933,9 @@ void addCMsgSrcAddr(struct msghdr* msgh, void* cmsgbuf, const ComboAddress* sour 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.40.0