From: Donald Sharp Date: Sun, 10 Sep 2023 13:33:55 +0000 (-0400) Subject: bgpd: bgp_process_main_one should ensure dest exists X-Git-Tag: base_9.1~77^2~13 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=70f6103afd129853cf5a611e28f8002ed5f9ff79;p=matthieu%2Ffrr.git bgpd: bgp_process_main_one should ensure dest exists Unsetting a flag after the dest has been possibly been freed is not a good thing to do. Ensure that this is not possible. Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 34d36a6375..7d0cc377bd 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -3504,11 +3504,12 @@ static void bgp_process_main_one(struct bgp *bgp, struct bgp_dest *dest, /* Clear any route change flags. */ bgp_zebra_clear_route_change_flags(dest); + UNSET_FLAG(dest->flags, BGP_NODE_PROCESS_SCHEDULED); + /* Reap old select bgp_path_info, if it has been removed */ if (old_select && CHECK_FLAG(old_select->flags, BGP_PATH_REMOVED)) bgp_path_info_reap(dest, old_select); - UNSET_FLAG(dest->flags, BGP_NODE_PROCESS_SCHEDULED); return; }