diff options
author | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2008-06-13 16:20:26 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen.hemminger@vyatta.com> | 2008-06-13 16:20:26 -0700 |
commit | 33c99279a7911914a583b146e350a65d2169cd9e (patch) | |
tree | 4bab3abcf754f11e3ff83e5b2813f47d62e507b4 | |
parent | 97dd2bf9bb517c428cfa2778cac071ad845d03a1 (diff) | |
download | quagga-33c99279a7911914a583b146e350a65d2169cd9e.tar.bz2 quagga-33c99279a7911914a583b146e350a65d2169cd9e.tar.xz |
Fix double free in bgp when using route client
Bugfix: 3160
Null pointers that in peer tables after free to prevent problems
with double free.
-rw-r--r-- | bgpd/bgpd.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index c4e54f03..b37e577d 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1243,7 +1243,10 @@ peer_delete (struct peer *peer) for (afi = AFI_IP; afi < AFI_MAX; afi++) for (safi = SAFI_UNICAST; safi < SAFI_MAX; safi++) if (peer->rib[afi][safi] && ! peer->af_group[afi][safi]) - bgp_table_finish (peer->rib[afi][safi]); + { + bgp_table_finish (peer->rib[afi][safi]); + peer->rib[afi][safi] = NULL; + } /* Buffers. */ if (peer->ibuf) @@ -1835,6 +1838,7 @@ peer_group_bind (struct bgp *bgp, union sockunion *su, } bgp_table_finish (peer->rib[afi][safi]); + peer->rib[afi][safi] = NULL; /* Import policy. */ if (peer->filter[afi][safi].map[RMAP_IMPORT].name) |