summaryrefslogtreecommitdiff
path: root/ospfd/ospf_lsa.c
diff options
context:
space:
mode:
authorPaul Jakma <paul.jakma@sun.com>2006-06-15 12:04:57 +0000
committerPaul Jakma <paul.jakma@sun.com>2006-06-15 12:04:57 +0000
commitac904dec03ce6b1bbd1bab1718085a366d485bd8 (patch)
treeffc6d51c14446bac13a7d3a945449bf1c2d8561f /ospfd/ospf_lsa.c
parent88871b1d1ea8150ddf3d8f66fe77323770ba0f9f (diff)
[ospfd] lsdb_delete/discard_from_db should be more robust to bad args
2006-05-31 Paul Jakma <paul.jakma@sun.com> * ospf_lsdb.c: (ospf_lsdb_delete) robustify against NULL arguments, print warning. * ospf_lsa.c: (ospf_discard_from_db) ditto. (ospf_maxage_lsa_remover) Check lsa->lsdb for validity, possible mitigation (but not solution) for bug #269.
Diffstat (limited to 'ospfd/ospf_lsa.c')
-rw-r--r--ospfd/ospf_lsa.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/ospfd/ospf_lsa.c b/ospfd/ospf_lsa.c
index 7c3be3d6..a0afbad3 100644
--- a/ospfd/ospf_lsa.c
+++ b/ospfd/ospf_lsa.c
@@ -2679,6 +2679,17 @@ ospf_discard_from_db (struct ospf *ospf,
{
struct ospf_lsa *old;
+ if (!lsdb)
+ {
+ zlog_warn ("%s: Called with NULL lsdb!", __func__);
+ if (!lsa)
+ zlog_warn ("%s: and NULL LSA!", __func__);
+ else
+ zlog_warn ("LSA[Type%d:%s]: not associated with LSDB!",
+ lsa->data->type, inet_ntoa (lsa->data->id));
+ return;
+ }
+
old = ospf_lsdb_lookup (lsdb, lsa);
if (!old)
@@ -3014,8 +3025,14 @@ ospf_maxage_lsa_remover (struct thread *thread)
}
/* Remove from lsdb. */
- ospf_discard_from_db (ospf, lsa->lsdb, lsa);
- ospf_lsdb_delete (lsa->lsdb, lsa);
+ if (lsa->lsdb)
+ {
+ ospf_discard_from_db (ospf, lsa->lsdb, lsa);
+ ospf_lsdb_delete (lsa->lsdb, lsa);
+ }
+ else
+ zlog_warn ("%s: LSA[Type%d:%s]: No associated LSDB!", __func__,
+ lsa->data->type, inet_ntoa (lsa->data->id));
}
/* A MaxAge LSA must be removed immediately from the router's link