summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2008-06-13 16:20:26 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2008-06-13 16:20:26 -0700
commit33c99279a7911914a583b146e350a65d2169cd9e (patch)
tree4bab3abcf754f11e3ff83e5b2813f47d62e507b4
parent97dd2bf9bb517c428cfa2778cac071ad845d03a1 (diff)
downloadquagga-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.c6
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)