]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: fix a crash in plist update
authorChirag Shah <chirag@nvidia.com>
Mon, 25 Jan 2021 19:44:56 +0000 (11:44 -0800)
committerIgor Ryzhov <iryzhov@nfware.com>
Wed, 24 Mar 2021 15:55:56 +0000 (18:55 +0300)
Problem:
Prefix-list with mulitiple rules, an update to
a rule/sequence with different prefix/prefixlen
reset prefix-list next-base pointer to avoid
having stale value.

In some case the old next-bast's reference leads
to an assert in tri (trie_install_fn ) add.

bt:
(object=0x55576a4c8a00, updptr=0x55576a4b97e0) at lib/plist.c:560
(plist=0x55576a4a1770, pentry=0x55576a4c8a00) at lib/plist.c:585
(ple=0x55576a4c8a00) at lib/plist.c:745
(args=0x7fffe04beb50) at lib/filter_nb.c:1181

Solution:
Reset prefix-list next-base pointer whenver a
sequence/rule is updated.

Ticket:CM-33109
Testing Done:

Signed-off-by: Chirag Shah <chirag@nvidia.com>
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
lib/plist.c

index 981e86e2acb787209579a28d36f95ff1e98bda01..c746d19462ea58df63c3ed699d71095a58b09812 100644 (file)
@@ -684,6 +684,7 @@ void prefix_list_entry_update_start(struct prefix_list_entry *ple)
        if (pl->head || pl->tail || pl->desc)
                pl->master->recent = pl;
 
+       ple->next_best = NULL;
        ple->installed = false;
 }