diff options
author | Donald Sharp <sharpd@cumulusnetworks.com> | 2015-09-16 13:17:56 -0400 |
---|---|---|
committer | Paul Jakma <paul@quagga.net> | 2015-09-24 15:26:44 +0100 |
commit | b3eeabee657df14509ce50d5f64262b672e87d62 (patch) | |
tree | 81b2a1382e84f4c0754c6c3814222b90106f04b5 /bgpd | |
parent | 104576dcafe356985326b2950bfc50962702b4fb (diff) | |
download | quagga-b3eeabee657df14509ce50d5f64262b672e87d62.tar.bz2 quagga-b3eeabee657df14509ce50d5f64262b672e87d62.tar.xz |
bgpd: Fix 'struct peer' memory leaks
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 <sharpd@cumulusnetworks.com>
Diffstat (limited to 'bgpd')
-rw-r--r-- | bgpd/bgpd.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index f77aa724..00680372 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); |