]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: fix bgp evpn cli memory leaks. 13918/head
authorAbhinay Ramesh <rabhinay@vmware.com>
Mon, 3 Jul 2023 09:40:11 +0000 (09:40 +0000)
committerAbhinay Ramesh <rabhinay@vmware.com>
Tue, 18 Jul 2023 10:15:19 +0000 (10:15 +0000)
problem:
In CLI config codeflow there are memory leaks in failure scenario

Fix:
Code changes are done to free ecommunity

Signed-off-by: Abhinay Ramesh <rabhinay@vmware.com>
bgpd/bgp_evpn_vty.c
bgpd/bgp_vty.c

index 77a997d178e7294bcb8b95c4498b8e8be6fc3838..442dd6ff3b3d83b27ee5cddf78a747d2664ee3da 100644 (file)
@@ -6973,6 +6973,8 @@ DEFUN(bgp_evpn_ead_es_rt, bgp_evpn_ead_es_rt_cmd,
        if (!bgp_evpn_rt_matches_existing(bgp_mh_info->ead_es_export_rtl,
                                          ecomadd))
                bgp_evpn_mh_config_ead_export_rt(bgp, ecomadd, false);
+       else
+               ecommunity_free(&ecomadd);
 
        return CMD_SUCCESS;
 }
@@ -7010,6 +7012,7 @@ DEFUN(no_bgp_evpn_ead_es_rt, no_bgp_evpn_ead_es_rt_cmd,
        }
        bgp_evpn_mh_config_ead_export_rt(bgp, ecomdel, true);
 
+       ecommunity_free(&ecomdel);
        return CMD_SUCCESS;
 }
 
@@ -7061,6 +7064,8 @@ DEFUN (bgp_evpn_vni_rt,
                /* Do nothing if we already have this import route-target */
                if (!bgp_evpn_rt_matches_existing(vpn->import_rtl, ecomadd))
                        evpn_configure_import_rt(bgp, vpn, ecomadd);
+               else
+                       ecommunity_free(&ecomadd);
        }
 
        /* Add/update the export route-target */
@@ -7077,6 +7082,8 @@ DEFUN (bgp_evpn_vni_rt,
                /* Do nothing if we already have this export route-target */
                if (!bgp_evpn_rt_matches_existing(vpn->export_rtl, ecomadd))
                        evpn_configure_export_rt(bgp, vpn, ecomadd);
+               else
+                       ecommunity_free(&ecomadd);
        }
 
        return CMD_SUCCESS;
@@ -7184,6 +7191,7 @@ DEFUN (no_bgp_evpn_vni_rt,
                }
        }
 
+       ecommunity_free(&ecomdel);
        return CMD_SUCCESS;
 }
 
index 7942797528c1e8be0fee11b4fc4ef881a3d45b07..72665878f99cfb96d6288de0abfa77ade407a66e 100644 (file)
@@ -8587,6 +8587,8 @@ DEFPY (neighbor_soo,
                ecommunity_free(&peer->soo[afi][safi]);
                peer->soo[afi][safi] = ecomm_soo;
                peer_af_flag_unset(peer, afi, safi, PEER_FLAG_SOO);
+       } else {
+               ecommunity_free(&ecomm_soo);
        }
 
        return bgp_vty_return(vty,