]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pimd: Cleanup uninitialized memory access
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 12 Dec 2016 00:28:08 +0000 (19:28 -0500)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 30 Jan 2017 17:53:27 +0000 (12:53 -0500)
Valgrind noticed that we have a read of uninitialized memory:

Conditional jump or move depends on uninitialised value(s)
==13749==    at 0x428067: pim_ifassert_winner_set (pim_assert.c:57)
==13749==    by 0x4266F0: pim_ifchannel_add (pim_ifchannel.c:535)
==13749==    by 0x426CC1: pim_ifchannel_join_add (pim_ifchannel.c:730)
==13749==    by 0x427B5B: recv_join (pim_join.c:95)
==13749==    by 0x427B5B: pim_joinprune_recv (pim_join.c:270)
==13749==    by 0x42354F: pim_pim_packet (pim_pim.c:249)
==13749==    by 0x4236C0: pim_sock_read (pim_pim.c:349)
==13749==    by 0x4E60587: thread_call (thread.c:1462)
==13749==    by 0x40C75E: main (pim_main.c:266)
==13749==

This commit fixes that issue.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd/pim_ifchannel.c

index 7056ade501460f15fdf02b8f7da50d5d97c46b79..0c0c2c40439e4183ab9b667bb37738ca7aaca9fe 100644 (file)
@@ -496,7 +496,7 @@ pim_ifchannel_add(struct interface *ifp,
     return NULL;
   }
 
-  ch = XMALLOC(MTYPE_PIM_IFCHANNEL, sizeof(*ch));
+  ch = XCALLOC(MTYPE_PIM_IFCHANNEL, sizeof(*ch));
   if (!ch) {
     zlog_warn("%s: pim_ifchannel_new() failure for (S,G)=%s on interface %s",
              __PRETTY_FUNCTION__,
@@ -535,6 +535,7 @@ pim_ifchannel_add(struct interface *ifp,
 
   /* Assert state */
   ch->t_ifassert_timer   = NULL;
+  ch->ifassert_state = PIM_IFASSERT_NOINFO;
   reset_ifassert_state(ch);
   if (pim_macro_ch_could_assert_eval(ch))
     PIM_IF_FLAG_SET_COULD_ASSERT(ch->flags);