bgpd: fix memory leak when deleting a community

* bgp_routemap.c: (route_set_community_delete) When deleting a
  community in a route-map the old community was being orphaned.  Like
  the description of the same code in route_set_community, this is a
  hack, not a true fix.
This commit is contained in:
Michael Lambert 2010-09-13 11:48:11 -04:00 committed by Paul Jakma
parent 4a2035fd71
commit 604a9b43dd

View File

@ -1393,6 +1393,13 @@ route_set_community_delete (void *rule, struct prefix *prefix,
new = community_uniq_sort (merge); new = community_uniq_sort (merge);
community_free (merge); community_free (merge);
/* HACK: if the old community is not intern'd,
* we should free it here, or all reference to it may be lost.
* Really need to cleanup attribute caching sometime.
*/
if (old->refcnt == 0)
community_free (old);
if (new->size == 0) if (new->size == 0)
{ {
binfo->attr->community = NULL; binfo->attr->community = NULL;