From: Donald Sharp Date: Tue, 27 Oct 2020 19:16:32 +0000 (-0400) Subject: bgpd: Prevent ecomm memory leak X-Git-Tag: base_7.6~342^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=736e6a45e6cfda9bd7a84d7423e23a69902225e0;p=matthieu%2Ffrr.git bgpd: Prevent ecomm memory leak There are some situations where we create a ecommunity for comparing to internal state when we are deleting, but in the failure cases we would not free up the created memory. Signed-off-by: Donald Sharp --- diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index b2491e1187..e9e2aafebb 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -5297,6 +5297,7 @@ DEFUN (no_bgp_evpn_vrf_rt, if (rt_type == RT_TYPE_IMPORT) { if (!bgp_evpn_rt_matches_existing(bgp->vrf_import_rtl, ecomdel)) { + ecommunity_free(&ecomdel); vty_out(vty, "%% RT specified does not match configuration for this VRF\n"); return CMD_WARNING; @@ -5305,6 +5306,7 @@ DEFUN (no_bgp_evpn_vrf_rt, } else if (rt_type == RT_TYPE_EXPORT) { if (!bgp_evpn_rt_matches_existing(bgp->vrf_export_rtl, ecomdel)) { + ecommunity_free(&ecomdel); vty_out(vty, "%% RT specified does not match configuration for this VRF\n"); return CMD_WARNING; @@ -5326,12 +5328,14 @@ DEFUN (no_bgp_evpn_vrf_rt, } if (!found_ecomdel) { + ecommunity_free(&ecomdel); vty_out(vty, "%% RT specified does not match configuration for this VRF\n"); return CMD_WARNING; } } + ecommunity_free(&ecomdel); return CMD_SUCCESS; }