]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bfdd: Prevent unininited data transmittal
authorDonald Sharp <sharpd@nvidia.com>
Sat, 30 Jan 2021 19:31:47 +0000 (14:31 -0500)
committerIgor Ryzhov <iryzhov@nfware.com>
Tue, 16 Feb 2021 17:57:15 +0000 (20:57 +0300)
Valgrind reports:

2052866-==2052866==
2052866-==2052866== Syscall param sendmsg(msg.msg_name) points to uninitialised byte(s)
2052866:==2052866==    at 0x49C8E13: sendmsg (sendmsg.c:28)
2052866-==2052866==    by 0x11DC08: bp_udp_send (bfd_packet.c:823)
2052866-==2052866==    by 0x11DD76: ptm_bfd_echo_snd (bfd_packet.c:179)
2052866-==2052866==    by 0x114C2D: ptm_bfd_echo_xmt_TO (bfd.c:469)
2052866-==2052866==    by 0x114C2D: ptm_bfd_echo_start (bfd.c:498)
2052866-==2052866==    by 0x114C2D: bs_echo_timer_handler (bfd.c:1199)
2052866-==2052866==    by 0x11E478: bfd_recv_cb (bfd_packet.c:702)
2052866-==2052866==    by 0x4904846: thread_call (thread.c:1681)
2052866-==2052866==    by 0x48CB4DF: frr_run (libfrr.c:1126)
2052866-==2052866==    by 0x113044: main (bfdd.c:403)
2052866-==2052866==  Address 0x1ffefff3e8 is on thread 1's stack

In ptm_bfd_echo_snd, for the v4 case we were memsetting the v6 memory
then setting the v4 memory.  Just fix it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bfdd/bfd_packet.c

index 076318e6cae2857f200377fe98e64a32be434e57..12bb52cf67667812ea6a8cc331c48b6e899f1273 100644 (file)
@@ -165,7 +165,7 @@ void ptm_bfd_echo_snd(struct bfd_session *bfd)
                salen = sizeof(sin6);
        } else {
                sd = bvrf->bg_echo;
-               memset(&sin6, 0, sizeof(sin6));
+               memset(&sin, 0, sizeof(sin));
                sin.sin_family = AF_INET;
                memcpy(&sin.sin_addr, &bfd->key.peer, sizeof(sin.sin_addr));
                sin.sin_port = htons(BFD_DEF_ECHO_PORT);