summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Jakma <paul.jakma@sun.com>2006-07-06 11:12:39 +0000
committerPaul Jakma <paul.jakma@sun.com>2006-07-06 11:12:39 +0000
commitaa2737a08a284953908e131894accd25bf627d53 (patch)
tree7fdf971c27d430f30982971233290b12e6be4231
parent5c1960687024a4ab16d33b58be8c410a935c583b (diff)
[ospfd] early-return in nsm_event missed LLDown event, fixes use after free
2006-07-06 Paul Jakma <paul.jakma@sun.com> * ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr being deleted, requires early-return too. Likely explains some crash reports after interface events.
-rw-r--r--ospfd/ChangeLog6
-rw-r--r--ospfd/ospf_nsm.c4
2 files changed, 9 insertions, 1 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 054935b3..b4f7d3e7 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,9 @@
+2006-07-06 Paul Jakma <paul.jakma@sun.com>
+
+ * ospf_nsm.c: (ospf_nsm_event) LLDown event also results in nbr
+ being deleted, requires early-return too. Likely explains
+ some crash reports after interface events.
+
2006-07-04 Paul Jakma <paul.jakma@sun.com>
* ospf_nsm.c: (general) Various small cleanups from Andrew's
diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c
index 11da503e..fb736eba 100644
--- a/ospfd/ospf_nsm.c
+++ b/ospfd/ospf_nsm.c
@@ -857,7 +857,9 @@ ospf_nsm_event (struct thread *thread)
/* When event is NSM_KillNbr or InactivityTimer, the neighbor is
deleted. */
- if (event == NSM_KillNbr || event == NSM_InactivityTimer)
+ if (event == NSM_KillNbr
+ || event == NSM_InactivityTimer
+ || event == NSM_LLDown)
{
if (IS_DEBUG_OSPF (nsm, NSM_EVENTS))
zlog_debug ("NSM[%s:%s]: neighbor deleted",