From 695acaa40fcedfa20d890bce67884ad988a88a38 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Tue, 27 Oct 2020 15:16:32 -0400 Subject: [PATCH] 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 --- bgpd/bgp_evpn_vty.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index 6369f994a7..2f207f8ab8 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -5300,6 +5300,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; @@ -5308,6 +5309,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; @@ -5329,12 +5331,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; } -- 2.39.5