From 260c92c867805f575fafa678fbb7c9f5c11a6ba6 Mon Sep 17 00:00:00 2001 From: saravanank Date: Sun, 15 Mar 2020 19:36:33 -0700 Subject: [PATCH] pimd: moving the route_unlock_node outside debug function Problem: Route node is not de referenced after search when pim debug events are not enabled when pim_rp_find_match_group is called. So this memory will not get released when route node is deleted after hitting this path. RCA: Dereferencing is done inside debug condition. Fix: Moving outside debug condition Signed-off-by: Saravanan K --- pimd/pim_rp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pimd/pim_rp.c b/pimd/pim_rp.c index 8799134edd..355aa07048 100644 --- a/pimd/pim_rp.c +++ b/pimd/pim_rp.c @@ -248,13 +248,14 @@ struct rp_info *pim_rp_find_match_group(struct pim_instance *pim, if (PIM_DEBUG_PIM_TRACE) { char buf[PREFIX_STRLEN]; - route_unlock_node(rn); zlog_debug("Lookedup: %p for rp_info: %p(%s) Lock: %d", rn, rp_info, prefix2str(&rp_info->group, buf, sizeof(buf)), rn->lock); } + route_unlock_node(rn); + if (!best) return rp_info; -- 2.39.5