From 9efcee6e7babd49999af3e3dcd13ee33d0a4c02d Mon Sep 17 00:00:00 2001 From: Neale Ranns Date: Tue, 26 Nov 2019 19:30:08 +0000 Subject: fib: Fix crash on cover update to non activated adj source if the adj source is not active then there is no existing cover during a cover update Type: fix Ticket: VPP-1803 Signed-off-by: Neale Ranns Change-Id: Ie912f1c99345de4fb012bdcd97b443098d4a7351 --- src/vnet/fib/fib_entry_src_adj.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/vnet/fib/fib_entry_src_adj.c') diff --git a/src/vnet/fib/fib_entry_src_adj.c b/src/vnet/fib/fib_entry_src_adj.c index b7f594656aa..2a5b46a2c91 100644 --- a/src/vnet/fib/fib_entry_src_adj.c +++ b/src/vnet/fib/fib_entry_src_adj.c @@ -373,19 +373,23 @@ fib_entry_src_adj_cover_update (fib_entry_src_t *src, * prefix is updated during the covers walk. */ fib_entry_src_cover_res_t res = { - .install = !0, + .install = 0, .bw_reason = FIB_NODE_BW_REASON_FLAG_NONE, }; fib_entry_t *cover; - ASSERT(FIB_NODE_INDEX_INVALID != src->u.adj.fesa_cover); - - cover = fib_entry_get(src->u.adj.fesa_cover); - - res.install = (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover)); + /* + * If there is no cover, then the source is not active and we can ignore + * this update + */ + if (FIB_NODE_INDEX_INVALID != src->u.adj.fesa_cover) + { + cover = fib_entry_get(src->u.adj.fesa_cover); - FIB_ENTRY_DBG(fib_entry, "adj-src-cover-updated"); + res.install = (FIB_ENTRY_FLAG_ATTACHED & fib_entry_get_flags_i(cover)); + FIB_ENTRY_DBG(fib_entry, "adj-src-cover-updated"); + } return (res); } -- cgit 1.2.3-korg