From: Donald Sharp Date: Fri, 17 Apr 2020 00:26:00 +0000 (-0400) Subject: pimd: if_lookup_by_index can fail handle it appropriately X-Git-Tag: base_7.4~68^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=85948e7bfa055e4553fa59338cdb2a53e000722d;p=matthieu%2Ffrr.git pimd: if_lookup_by_index can fail handle it appropriately It is possible that a if_lookup_by_index can return NULL ensure that we handle this appropriately. Signed-off-by: Donald Sharp --- diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 60b7c73d43..68d43c0556 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -788,7 +788,11 @@ int pim_parse_nexthop_update(ZAPI_CALLBACK_ARGS) case NEXTHOP_TYPE_IPV6_IFINDEX: ifp1 = if_lookup_by_index(nexthop->ifindex, pim->vrf_id); - nbr = pim_neighbor_find_if(ifp1); + + if (!ifp1) + nbr = NULL; + else + nbr = pim_neighbor_find_if(ifp1); /* Overwrite with Nbr address as NH addr */ if (nbr) nexthop->gate.ipv4 = nbr->source_addr; diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index 84fac4f951..49c221f8ed 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -285,17 +285,17 @@ static int zclient_read_nexthop(struct pim_instance *pim, * If we are sending v6 secondary assume we receive v6 * secondary */ - if (pim->send_v6_secondary) - nbr = pim_neighbor_find_by_secondary( - if_lookup_by_index( - nexthop_tab[num_ifindex] - .ifindex, - nexthop_vrf_id), - &p); + struct interface *ifp = if_lookup_by_index( + nexthop_tab[num_ifindex].ifindex, + nexthop_vrf_id); + + if (!ifp) + nbr = NULL; + else if (pim->send_v6_secondary) + nbr = pim_neighbor_find_by_secondary(ifp, &p); else - nbr = pim_neighbor_find_if(if_lookup_by_index( - nexthop_tab[num_ifindex].ifindex, - nexthop_vrf_id)); + nbr = pim_neighbor_find_if(ifp); + if (nbr) { nexthop_tab[num_ifindex].nexthop_addr.family = AF_INET;