diff options
| author | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-09-10 02:28:07 +0300 | 
|---|---|---|
| committer | Donatas Abraitis <donatas@opensourcerouting.org> | 2022-09-10 18:13:45 +0300 | 
| commit | 61adcf71be1e279f51a747772f2ce2db742b2581 (patch) | |
| tree | 05588cc4f203522d67e32251f061d0488f1311e0 /bgpd/bgp_updgrp.c | |
| parent | db391f7d062b4e8a45eb7477f1e96cf3c01a8b89 (diff) | |
bgpd: Fix memory leak for `conf_copy()` - SoO ecommunity
==1179738== 48 (40 direct, 8 indirect) bytes in 1 blocks are definitely lost in loss record 13 of 29
==1179738==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
==1179738==    by 0x493C8D5: qcalloc (memory.c:116)
==1179738==    by 0x208F0C: ecommunity_dup (bgp_ecommunity.c:267)
==1179738==    by 0x2B300C: conf_copy (bgp_updgrp.c:170)
==1179738==    by 0x2B35BF: peer2_updgrp_copy (bgp_updgrp.c:277)
==1179738==    by 0x2B5189: update_group_find (bgp_updgrp.c:826)
==1179738==    by 0x2B70D0: update_group_adjust_peer (bgp_updgrp.c:1769)
==1179738==    by 0x23DB7D: update_group_adjust_peer_afs (bgp_updgrp.h:519)
==1179738==    by 0x243B21: bgp_establish (bgp_fsm.c:2129)
==1179738==    by 0x244B94: bgp_event_update (bgp_fsm.c:2597)
==1179738==    by 0x26B0E6: bgp_process_packet (bgp_packet.c:2895)
==1179738==    by 0x498F5FD: thread_call (thread.c:2008)
==1179738==    by 0x49253DA: frr_run (libfrr.c:1198)
==1179738==    by 0x1EEC38: main (bgp_main.c:520)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
Diffstat (limited to 'bgpd/bgp_updgrp.c')
| -rw-r--r-- | bgpd/bgp_updgrp.c | 2 | 
1 files changed, 2 insertions, 0 deletions
diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c index d198aec983..0219535b0d 100644 --- a/bgpd/bgp_updgrp.c +++ b/bgpd/bgp_updgrp.c @@ -254,6 +254,8 @@ static void conf_release(struct peer *src, afi_t afi, safi_t safi)  	XFREE(MTYPE_BGP_FILTER_NAME, srcfilter->advmap.cname);  	XFREE(MTYPE_BGP_PEER_HOST, src->host); + +	ecommunity_free(&src->soo[afi][safi]);  }  static void peer2_updgrp_copy(struct update_group *updgrp, struct peer_af *paf)  | 
