From 2f702571df8c97951c48784fd44ab357e8b619f2 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Fri, 12 Jun 2015 17:47:26 -0700 Subject: [PATCH] pimd assert when no route to source from a new igmp join When pim_upstream_new is called the code looks up the nexthop. If there is no route to the source, the code silently ignored the error returned. When the nexthop lookup fails don't create the 'struct pim_stream *' to return. Signed-off-by: Donald Sharp --- pimd/pim_upstream.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c index 7bd23ffc61..7957f5da46 100644 --- a/pimd/pim_upstream.c +++ b/pimd/pim_upstream.c @@ -349,6 +349,7 @@ static struct pim_upstream *pim_upstream_new(struct in_addr source_addr, struct in_addr group_addr) { struct pim_upstream *up; + enum pim_rpf_result rpf_result; up = XMALLOC(MTYPE_PIM_UPSTREAM, sizeof(*up)); if (!up) { @@ -372,7 +373,11 @@ static struct pim_upstream *pim_upstream_new(struct in_addr source_addr, up->rpf.source_nexthop.mrib_route_metric = qpim_infinite_assert_metric.route_metric; up->rpf.rpf_addr.s_addr = PIM_NET_INADDR_ANY; - pim_rpf_update(up, 0); + rpf_result = pim_rpf_update(up, 0); + if (rpf_result == PIM_RPF_FAILURE) { + XFREE(MTYPE_PIM_UPSTREAM, up); + return NULL; + } listnode_add(qpim_upstream_list, up); -- 2.39.5