From b5f2c1267ef8c7694bb96aff748a866775ab1cbe Mon Sep 17 00:00:00 2001 From: paul Date: Mon, 10 Nov 2003 23:56:29 +0000 Subject: 2003-11-10 Claus Endres * ospfd/ospf_interface.c: (ospf_if_table_lookup) grab reference to rn->info /before/ calling route_unlock_node() as some systems may deliberately poison freed memory, eg FreeBSD 5.1. see [quagga-dev 417]. --- ospfd/ospf_interface.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ospfd') diff --git a/ospfd/ospf_interface.c b/ospfd/ospf_interface.c index 2519ec9c..2afe19ec 100644 --- a/ospfd/ospf_interface.c +++ b/ospfd/ospf_interface.c @@ -131,13 +131,15 @@ ospf_if_table_lookup (struct interface *ifp, struct prefix *prefix) { struct prefix p; struct route_node *rn; + struct ospf_interface *rninfo; p = *prefix; rn = route_node_get (IF_OIFS (ifp), &p); /* route_node_get implicitely locks */ + rninfo = (struct ospf_interface *) rn->info; route_unlock_node (rn); - return (struct ospf_interface *) rn->info; + return rninfo; } void -- cgit v1.2.1