From 0c656748ad729267314acbf05427de8dc2dfca95 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Mon, 11 Mar 2019 09:47:31 +0100 Subject: VPP-1533: Deleting a non-existent pre-resolved MAP next-hop causes VPP core dump Change-Id: I6f0830b786ac46c69c867f73b044aab174e6210b Signed-off-by: Ole Troan --- src/plugins/map/map.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/plugins/map/map.c') diff --git a/src/plugins/map/map.c b/src/plugins/map/map.c index 2f13336b568..d77b141593b 100644 --- a/src/plugins/map/map.c +++ b/src/plugins/map/map.c @@ -229,7 +229,7 @@ map_add_del_psid (u32 map_domain_index, u16 psid, ip6_address_t * tep, #ifdef MAP_SKIP_IP6_LOOKUP /** - * Pre-resolvd per-protocol global next-hops + * Pre-resolved per-protocol global next-hops */ map_main_pre_resolved_t pre_resolved[FIB_PROTOCOL_MAX]; @@ -351,14 +351,17 @@ map_fib_unresolve (map_main_pre_resolved_t * pr, .fp_addr = *addr, }; - fib_entry_child_remove (pr->fei, pr->sibling); + if (pr->fei != FIB_NODE_INDEX_INVALID) + { + fib_entry_child_remove (pr->fei, pr->sibling); - fib_table_entry_special_remove (0, // default fib - &pfx, FIB_SOURCE_RR); - dpo_reset (&pr->dpo); + fib_table_entry_special_remove (0, // default fib + &pfx, FIB_SOURCE_RR); + dpo_reset (&pr->dpo); - pr->fei = FIB_NODE_INDEX_INVALID; - pr->sibling = FIB_NODE_INDEX_INVALID; + pr->fei = FIB_NODE_INDEX_INVALID; + pr->sibling = FIB_NODE_INDEX_INVALID; + } } void -- cgit 1.2.3-korg