Valgrind is reporting that pimd is using uninitialized
memory for comparisons.  This commit addresses
the issues found there.

Signed-off-by: Donald Sharp <sha...@cumulusnetworks.com>
---
 pimd/pim_iface.c     | 1 +
 pimd/pim_ifchannel.c | 7 +++++--
 pimd/pim_igmpv3.c    | 5 -----
 pimd/pim_pim.c       | 5 -----
 4 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c
index 2533d0f..ddad6cb 100644
--- a/pimd/pim_iface.c
+++ b/pimd/pim_iface.c
@@ -107,6 +107,7 @@ struct pim_interface *pim_if_new(struct interface *ifp, int 
igmp, int pim)
   pim_ifp->igmp_socket_list = 0;
   pim_ifp->pim_neighbor_list = 0;
   pim_ifp->pim_ifchannel_list = 0;
+  pim_ifp->pim_generation_id = 0;
 
   /* list of struct igmp_sock */
   pim_ifp->igmp_socket_list = list_new();
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index e801f4e..ad97879 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -223,6 +223,11 @@ static struct pim_ifchannel *pim_ifchannel_new(struct 
interface *ifp,
   ch->t_ifjoin_prune_pending_timer = 0;
   ch->ifjoin_creation              = 0;
 
+  ch->ifassert_my_metric = pim_macro_ch_my_assert_metric_eval(ch);
+  ch->ifassert_winner_metric = pim_macro_ch_my_assert_metric_eval (ch);
+
+  ch->ifassert_winner.s_addr = 0;
+
   /* Assert state */
   ch->t_ifassert_timer   = 0;
   reset_ifassert_state(ch);
@@ -236,8 +241,6 @@ static struct pim_ifchannel *pim_ifchannel_new(struct 
interface *ifp,
   else
     PIM_IF_FLAG_UNSET_ASSERT_TRACKING_DESIRED(ch->flags);
 
-  ch->ifassert_my_metric = pim_macro_ch_my_assert_metric_eval(ch);
-
   /* Attach to list */
   listnode_add(pim_ifp->pim_ifchannel_list, ch);
 
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 3657f2f..e5001f7 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -1670,14 +1670,9 @@ void pim_igmp_send_membership_query(struct igmp_group 
*group,
               querier_query_interval, qqic, checksum);
   }
 
-#if 0
   memset(&to, 0, sizeof(to));
-#endif
   to.sin_family = AF_INET;
   to.sin_addr = dst_addr;
-#if 0
-  to.sin_port = htons(0);
-#endif
   tolen = sizeof(to);
 
   sent = sendto(fd, query_buf, msg_size, MSG_DONTWAIT,
diff --git a/pimd/pim_pim.c b/pimd/pim_pim.c
index c522475..c52b0d3 100644
--- a/pimd/pim_pim.c
+++ b/pimd/pim_pim.c
@@ -473,14 +473,9 @@ int pim_msg_send(int fd,
               *(uint16_t *) PIM_MSG_HDR_OFFSET_CHECKSUM(pim_msg));
   }
 
-#if 0
   memset(&to, 0, sizeof(to));
-#endif
   to.sin_family = AF_INET;
   to.sin_addr = dst;
-#if 0
-  to.sin_port = htons(0);
-#endif
   tolen = sizeof(to);
 
   if (PIM_DEBUG_PIM_PACKETDUMP_SEND) {
-- 
2.7.4


_______________________________________________
Quagga-dev mailing list
Quagga-dev@lists.quagga.net
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to