summaryrefslogtreecommitdiff
path: root/bgpd
diff options
context:
space:
mode:
authorJorge Boncompte [DTI2] <jorge@dti2.net>2012-04-13 13:46:09 +0200
committerDavid Lamparter <equinox@diac24.net>2012-04-16 18:37:17 +0200
commitfa4094ac49b4cc23589f5c5b7e608c4b4ee6ca04 (patch)
tree6ee1470a3db1d3e09e455a34a41b6b5db4296847 /bgpd
parent7939e016b3d4ecd2f5b8ad708b69607e05a084a6 (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>
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_damp.c4
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);