From: Richard Wu Date: Wed, 3 Jun 2020 01:44:16 +0000 (+0800) Subject: zebra: Fix zebra crashed in building FPM netlink message when bgp sends aggregation... X-Git-Tag: base_7.5~314^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=b0e9567ed162da708f8d0b3a3caf87cd03b62e96;p=matthieu%2Ffrr.git zebra: Fix zebra crashed in building FPM netlink message when bgp sends aggregation routes to zebra. Issue: When BGP sends aggregation routes to zebra, the next hop is black hole. Then Zebra will try to build the netlink FPM message, but there is no next hop as it is a black hole route. Then the netlink_route_info_fill function returns 0. In the result, zebra will crashed in "assert(data_len)" of zfpm_build_route_updates. This issue also happen when I create a static black hole route via staticd. Fix: As the netlink message of the blackhole route is legal, it should return success. Signed-off-by: Richard Wu --- diff --git a/zebra/zebra_fpm_netlink.c b/zebra/zebra_fpm_netlink.c index c580fe40d5..b194f80fc7 100644 --- a/zebra/zebra_fpm_netlink.c +++ b/zebra/zebra_fpm_netlink.c @@ -339,7 +339,7 @@ static int netlink_route_info_fill(struct netlink_route_info *ri, int cmd, } /* If there is no useful nexthop then return. */ - if (ri->num_nhs == 0) { + if (ri->rtm_type != RTN_BLACKHOLE && ri->num_nhs == 0) { zfpm_debug("netlink_encode_route(): No useful nexthop."); return 0; }