aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2026-04-24 13:22:51 +0000
committerMark Johnston <markj@FreeBSD.org>2026-04-24 13:22:51 +0000
commite0751ae801b3e29c6dd52905ef1d63d5cd643b0a (patch)
tree552c8cdbca19599b11395c600b81828a8833f112
parenteb837cb8b2073c09bafaf3318f5bb103827b2bca (diff)
ip_mroute: Avoid leaking uninitialized bytes to the routing daemon
Reported by: KMSAN MFC after: 1 week
-rw-r--r--sys/netinet/ip_mroute.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c
index 359755b19e95..14bd458b74f3 100644
--- a/sys/netinet/ip_mroute.c
+++ b/sys/netinet/ip_mroute.c
@@ -2459,13 +2459,14 @@ pim_register_send_upcall(struct mfctable *mfct, struct ip *ip, struct vif *vifp,
/* Send message to routing daemon */
im = mtod(mb_first, struct igmpmsg *);
- im->im_msgtype = IGMPMSG_WHOLEPKT;
- im->im_mbz = 0;
- im->im_vif = vifp - mfct->viftable;
- im->im_src = ip->ip_src;
- im->im_dst = ip->ip_dst;
-
- k_igmpsrc.sin_addr = ip->ip_src;
+ memset(im, 0, sizeof(*im));
+ im->im_msgtype = IGMPMSG_WHOLEPKT;
+ im->im_mbz = 0;
+ im->im_vif = vifp - mfct->viftable;
+ im->im_src = ip->ip_src;
+ im->im_dst = ip->ip_dst;
+
+ k_igmpsrc.sin_addr = ip->ip_src;
MRTSTAT_INC(mrts_upcalls);