]> git.puffer.fish Git - matthieu/frr.git/commitdiff
[bgpd] Potential bug#287 fix, peer_delete should NULL out freed buffers
authorPaul Jakma <paul.jakma@sun.com>
Thu, 27 Jul 2006 19:05:12 +0000 (19:05 +0000)
committerPaul Jakma <paul.jakma@sun.com>
Thu, 27 Jul 2006 19:05:12 +0000 (19:05 +0000)
2006-07-27 Paul Jakma <paul.jakma@sun.com>

* bgpd.c: (peer_delete) Ensure freed buffers can not be
  accidently reused. A potential fix for bug #287.

bgpd/ChangeLog
bgpd/bgpd.c

index a8a6c35002542fd47fbc8f6d02182046687b943d..90d0e0e3d999871f5d9fdfa01c9a347f22c52d17 100644 (file)
@@ -1,3 +1,8 @@
+2006-07-27 Paul Jakma <paul.jakma@sun.com>
+
+       * bgpd.c: (peer_delete) Ensure freed buffers can not be
+         accidently reused. A potential fix for bug #287.
+
 2006-07-02 Paul Jakma <paul.jakma@sun.com>
 
        * bgp_fsm.c: (bgp_{stop,start}) Move clear/free of certain
index b574a9aab5930d9a0d1962b2e67c0870e930f91f..8ed598d282cd3431594e2fbddd0baa18693220d1 100644 (file)
@@ -1205,18 +1205,19 @@ peer_delete (struct peer *peer)
   /* Buffers.  */
   if (peer->ibuf)
     stream_free (peer->ibuf);
-  
   if (peer->obuf)
     stream_fifo_free (peer->obuf);
-
   if (peer->work)
     stream_free (peer->work);
-  
+  peer->obuf = NULL;
+  peer->work = peer->ibuf = NULL;
+
   /* Local and remote addresses. */
   if (peer->su_local)
     sockunion_free (peer->su_local);
   if (peer->su_remote)
     sockunion_free (peer->su_remote);
+  peer->su_local = peer->su_remote = NULL;
   
   bgp_sync_delete (peer);