From 53e39e140d288e429f3c2c73db056a5bc4ac4659 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 8 Nov 2016 19:40:08 -0500 Subject: [PATCH] pimd: Ensure 'struct prefix sg' is inited in right order When we called pim_parse_addr_group, don't reinitialize the 'struct prefix_sg' *after* we've parsed the group. Ensure in other places that we do this work, we initialize prior as well. Ticket: CM-13510 Signed-off-by: Donald Sharp --- pimd/pim_assert.c | 1 + pimd/pim_join.c | 1 + pimd/pim_register.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pimd/pim_assert.c b/pimd/pim_assert.c index ca21786aea..29a241b277 100644 --- a/pimd/pim_assert.c +++ b/pimd/pim_assert.c @@ -241,6 +241,7 @@ int pim_assert_recv(struct interface *ifp, /* Parse assert group addr */ + memset (&sg, 0, sizeof (struct prefix_sg)); offset = pim_parse_addr_group (&sg, curr, curr_size); if (offset < 1) { char src_str[INET_ADDRSTRLEN]; diff --git a/pimd/pim_join.c b/pimd/pim_join.c index 8ef2cada87..53c91ab4af 100644 --- a/pimd/pim_join.c +++ b/pimd/pim_join.c @@ -293,6 +293,7 @@ int pim_joinprune_recv(struct interface *ifp, uint16_t msg_num_pruned_sources; int source; + memset (&sg, 0, sizeof (struct prefix_sg)); addr_offset = pim_parse_addr_group (&sg, buf, pastend - buf); if (addr_offset < 1) { diff --git a/pimd/pim_register.c b/pimd/pim_register.c index 229232fde4..e012115e37 100644 --- a/pimd/pim_register.c +++ b/pimd/pim_register.c @@ -105,11 +105,11 @@ pim_register_stop_recv (uint8_t *buf, int buf_size) struct prefix_sg sg; int l; + memset (&sg, 0, sizeof (struct prefix_sg)); l = pim_parse_addr_group (&sg, buf, buf_size); buf += l; buf_size -= l; pim_parse_addr_ucast (&source, buf, buf_size); - memset (&sg, 0, sizeof (struct prefix_sg)); sg.src = source.u.prefix4; if (PIM_DEBUG_PIM_REG) -- 2.39.5