[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.
diff --git a/ospfd/ospf_lsdb.c b/ospfd/ospf_lsdb.c
index c0ec4b3..b161b80 100644
--- a/ospfd/ospf_lsdb.c
+++ b/ospfd/ospf_lsdb.c
@@ -127,6 +127,22 @@
   struct prefix_ls lp;
   struct route_node *rn;
 
+  if (!lsdb)
+    {
+      zlog_warn ("%s: Called with NULL LSDB", __func__);
+      if (lsa)
+        zlog_warn ("LSA[Type%d:%s]: LSA %p, lsa->lsdb %p",
+                   lsa->data->type, inet_ntoa (lsa->data->id),
+                   lsa, lsa->lsdb);
+      return;
+    }
+  
+  if (!lsa)
+    {
+      zlog_warn ("%s: Called with NULL LSA", __func__);
+      return;
+    }
+  
   table = lsdb->type[lsa->data->type].db;
   lsdb_prefix_set (&lp, lsa);
   rn = route_node_lookup (table, (struct prefix *) &lp);