summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss White <russ@riw.us>2023-03-07 09:31:27 -0500
committerGitHub <noreply@github.com>2023-03-07 09:31:27 -0500
commit44ff41e5660f8181cb6de94a61d15447e983b8bc (patch)
tree4bb2dd494d9448c192fe04b44a35f5338456fdd4
parentae7b16b2d4f658d954ff066080f6068df2f5e586 (diff)
parent84ef27fca33a1f60c57d3db4ce35a5f1f2009929 (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.c12
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);
}