mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 20:34:33 +00:00
[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.
This commit is contained in:
parent
88871b1d1e
commit
ac904dec03
@ -1,3 +1,11 @@
|
|||||||
|
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.
|
||||||
|
|
||||||
2006-05-30 Paul Jakma <paul.jakma@sun.com>
|
2006-05-30 Paul Jakma <paul.jakma@sun.com>
|
||||||
|
|
||||||
* ospf_packet.c: (ospf_read) Debug message about packets
|
* ospf_packet.c: (ospf_read) Debug message about packets
|
||||||
|
@ -2679,6 +2679,17 @@ ospf_discard_from_db (struct ospf *ospf,
|
|||||||
{
|
{
|
||||||
struct ospf_lsa *old;
|
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);
|
old = ospf_lsdb_lookup (lsdb, lsa);
|
||||||
|
|
||||||
if (!old)
|
if (!old)
|
||||||
@ -3014,8 +3025,14 @@ ospf_maxage_lsa_remover (struct thread *thread)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Remove from lsdb. */
|
/* Remove from lsdb. */
|
||||||
ospf_discard_from_db (ospf, lsa->lsdb, lsa);
|
if (lsa->lsdb)
|
||||||
ospf_lsdb_delete (lsa->lsdb, lsa);
|
{
|
||||||
|
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
|
/* A MaxAge LSA must be removed immediately from the router's link
|
||||||
|
@ -127,6 +127,22 @@ ospf_lsdb_delete (struct ospf_lsdb *lsdb, struct ospf_lsa *lsa)
|
|||||||
struct prefix_ls lp;
|
struct prefix_ls lp;
|
||||||
struct route_node *rn;
|
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;
|
table = lsdb->type[lsa->data->type].db;
|
||||||
lsdb_prefix_set (&lp, lsa);
|
lsdb_prefix_set (&lp, lsa);
|
||||||
rn = route_node_lookup (table, (struct prefix *) &lp);
|
rn = route_node_lookup (table, (struct prefix *) &lp);
|
||||||
|
Loading…
Reference in New Issue
Block a user