From: Igor Ryzhov Date: Wed, 9 Feb 2022 22:15:57 +0000 (+0300) Subject: bgpd: fix missing bgp_attr_flush on errors in bgp_update X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=2ff375d7aaaad1840debcc0f8c36c5ccdad77803;p=mirror%2Ffrr.git bgpd: fix missing bgp_attr_flush on errors in bgp_update Signed-off-by: Igor Ryzhov (cherry picked from commit 4dbf2038ea76f8ee697f9ec0d8f9aa5e7e5e69d9) --- diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 0044292433..766f026085 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -3812,6 +3812,7 @@ int bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id, if (bgp_mac_entry_exists(p) || bgp_mac_exist(&attr->rmac)) { peer->stat_pfx_nh_invalid++; reason = "self mac;"; + bgp_attr_flush(&new_attr); goto filtered; } @@ -3828,13 +3829,15 @@ int bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id, && (!CHECK_FLAG(dest->flags, BGP_NODE_FIB_INSTALLED))) SET_FLAG(dest->flags, BGP_NODE_FIB_INSTALL_PENDING); - attr_new = bgp_attr_intern(&new_attr); - /* If maximum prefix count is configured and current prefix * count exeed it. */ - if (bgp_maximum_prefix_overflow(peer, afi, safi, 0)) + if (bgp_maximum_prefix_overflow(peer, afi, safi, 0)) { + bgp_attr_flush(&new_attr); return -1; + } + + attr_new = bgp_attr_intern(&new_attr); /* If the update is implicit withdraw. */ if (pi) {