peer_delete has been written to handle the peer->group pointer and
to remove the peer from the peer group if it exists upon deletion being
called.  Shutdown/deletion Code was intentionally setting the peer-group
to NULL prior to calling peer_delete.  This leaked the memory associated
with the peer->group because of refcnt accounting.

Signed-off-by: Donald Sharp <[email protected]>
---
 bgpd/bgpd.c |    2 --
 1 file changed, 2 deletions(-)

diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 20a2123..f3bde02 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -1696,7 +1696,6 @@ peer_group_delete (struct peer_group *group)
 
   for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
     {
-      peer->group = NULL;
       peer_delete (peer);
     }
   list_delete (group->peer);
@@ -1726,7 +1725,6 @@ peer_group_remote_as_delete (struct peer_group *group)
 
   for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer))
     {
-      peer->group = NULL;
       peer_delete (peer);
     }
   list_delete_all_node (group->peer);
-- 
1.7.10.4


_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to