diff options
| author | Russ White <russ@riw.us> | 2023-03-07 09:31:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-07 09:31:27 -0500 |
| commit | 44ff41e5660f8181cb6de94a61d15447e983b8bc (patch) | |
| tree | 4bb2dd494d9448c192fe04b44a35f5338456fdd4 | |
| parent | ae7b16b2d4f658d954ff066080f6068df2f5e586 (diff) | |
| parent | 84ef27fca33a1f60c57d3db4ce35a5f1f2009929 (diff) | |
Merge pull request #12946 from opensourcerouting/fix/memory_leak_adj_out_set
bgpd: Intern attributes before putting into rib-out
| -rw-r--r-- | bgpd/bgp_route.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c index 1e9f9429c5..56f548bfd5 100644 --- a/bgpd/bgp_route.c +++ b/bgpd/bgp_route.c @@ -2921,10 +2921,14 @@ void subgroup_process_announce_selected(struct update_subgroup *subgrp, * in FIB, then it is advertised */ if (advertise) { - if (!bgp_check_withdrawal(bgp, dest)) - bgp_adj_out_set_subgroup( - dest, subgrp, &attr, selected); - else + if (!bgp_check_withdrawal(bgp, dest)) { + struct attr *adv_attr = + bgp_attr_intern(&attr); + + bgp_adj_out_set_subgroup(dest, subgrp, + adv_attr, + selected); + } else bgp_adj_out_unset_subgroup( dest, subgrp, 1, addpath_tx_id); } |
