diff --git a/bfdd/bfd_packet.c b/bfdd/bfd_packet.c index 8d74c5c234..543181a12a 100644 --- a/bfdd/bfd_packet.c +++ b/bfdd/bfd_packet.c @@ -718,12 +718,6 @@ static ssize_t bfd_recv_ipv4(int sd, bool is_mhop, char *port, size_t portlen, msghdr.msg_control = cmsgbuf; msghdr.msg_controllen = sizeof(cmsgbuf); - /* Sanitize input/output. */ - memset(port, 0, portlen); - memset(vrfname, 0, vrfnamelen); - memset(local, 0, sizeof(*local)); - memset(peer, 0, sizeof(*peer)); - mlen = recvmsg(sd, &msghdr, MSG_DONTWAIT); if (mlen == -1) { if (errno != EAGAIN) @@ -843,12 +837,6 @@ ssize_t bfd_recv_ipv6(int sd, bool is_mhop, char *port, size_t portlen, msghdr6.msg_control = cmsgbuf6; msghdr6.msg_controllen = sizeof(cmsgbuf6); - /* Sanitize input/output. */ - memset(port, 0, portlen); - memset(vrfname, 0, vrfnamelen); - memset(local, 0, sizeof(*local)); - memset(peer, 0, sizeof(*peer)); - mlen = recvmsg(sd, &msghdr6, MSG_DONTWAIT); if (mlen == -1) { if (errno != EAGAIN) @@ -983,6 +971,12 @@ int bfd_recv_cb(struct thread *t) return 0; } + /* Sanitize input/output. */ + memset(port, 0, sizeof(port)); + memset(vrfname, 0, sizeof(vrfname)); + memset(&local, 0, sizeof(local)); + memset(&peer, 0, sizeof(peer)); + /* Handle control packets. */ is_mhop = is_vxlan = false; if (sd == bglobal.bg_shop || sd == bglobal.bg_mhop) {