]> git.proxmox.com Git - mirror_frr.git/commit - bgpd/bgp_route.c
bgpd: Fix for ain->attr corruption during path update
authorPooja Jagadeesh Doijode <pdoijode@nvidia.com>
Wed, 19 Apr 2023 01:40:06 +0000 (18:40 -0700)
committerPooja Jagadeesh Doijode <pdoijode@nvidia.com>
Wed, 19 Apr 2023 01:40:06 +0000 (18:40 -0700)
commit6e076ba5231cba2e22dcbdc48a9c13df046a2e47
treecbdf98d92916f6e6eea689d9adf96dd8923521bc
parent74aad5ab559cc39f52137292b3b38d2d07eff428
bgpd: Fix for ain->attr corruption during path update

1. Consider a established L2VPN EVPN BGP peer with soft-reconfiguartion
   inbound configured

2. When the interface of this directly connected BGP peer is shutdown,
   bgp_soft_reconfig_table_update() is called, which memsets the evpn buffer
   and calls bgp_update() with received attributes stored in ain table(ain->attr).
   In bgp_update(), evpn_overlay attribute in ain->attr (which is an interned
   attr) was modified by doing a memcpy

3. Above action causes 2 attributes in the attrhash (which were previously different)
   to match!

4. Later during fsm change event of the peer, bgp_adj_in_remove() is called
   to clean up the ain->attr. But, because 2 attrs in attrhash match, it causes
   BGP to assert in bgp_attr_unintern()

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
bgpd/bgp_route.c