diff options
author | Jorge Boncompte [DTI2] <jorge@dti2.net> | 2012-04-13 13:46:09 +0200 |
---|---|---|
committer | David Lamparter <equinox@diac24.net> | 2012-04-16 18:37:17 +0200 |
commit | fa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04 (patch) | |
tree | 6ee1470a3db1d3e09e455a34a41b6b5db4296847 | |
parent | 7939e016b3d4ecd2f5b8ad708b69607e05a084a6 (diff) |
bgpd: Fix crash when disabling dampening (BZ#687)
Vladimir Podobaev reported that the following commands crashed the
daemon.
router bgp 123
bgp dampening
no bgp dampening 1 2 3 4
no bgp dampening
The problem was that bgp_damp_info_clean() tried to dereference the
already freed reuse_list array in the second call to "no bgp dampening".
Fixed by checking in bgp_damp_disable() that the dampening it's
enabled before doing the cleanup.
Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
-rw-r--r-- | bgpd/bgp_damp.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bgpd/bgp_damp.c b/bgpd/bgp_damp.c index a5138833..2820f17c 100644 --- a/bgpd/bgp_damp.c +++ b/bgpd/bgp_damp.c @@ -498,6 +498,10 @@ bgp_damp_info_clean (void) int bgp_damp_disable (struct bgp *bgp, afi_t afi, safi_t safi) { + /* If it wasn't enabled, there's nothing to do. */ + if (! CHECK_FLAG (bgp->af_flags[afi][safi], BGP_CONFIG_DAMPENING)) + return 0; + /* Cancel reuse thread. */ if (damp->t_reuse ) thread_cancel (damp->t_reuse); |