summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorpb <pb@FreeBSD.org>1999-06-25 13:43:30 +0000
committerpb <pb@FreeBSD.org>1999-06-25 13:43:30 +0000
commit5ed26c8f51820fc71578a9f1abc4fa06760f89d3 (patch)
treeb58cd2c103b10b5a1f358dfde6ce1fe2caff507b /sys/net
parent93ee80e2fd7ce70f607cb2c3402d9202e4ccd03f (diff)
downloadFreeBSD-src-5ed26c8f51820fc71578a9f1abc4fa06760f89d3.zip
FreeBSD-src-5ed26c8f51820fc71578a9f1abc4fa06760f89d3.tar.gz
Never return the root node itself from rn_match(); return NULL instead.
This caused a panic in rtfreee() called with a root node from the routing socket code (when processing a RTM_GET message looking for the default route while there is none). Since no existing code seems to have any use getting the root node from rn_match(), it seems cleaner never to return it rather than check for this condition at the caller's. PR: kern/12265
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/radix.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/net/radix.c b/sys/net/radix.c
index bca5bdd..30608d8 100644
--- a/sys/net/radix.c
+++ b/sys/net/radix.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)radix.c 8.4 (Berkeley) 11/2/94
- * $Id: radix.c,v 1.16 1999/04/26 09:05:31 peter Exp $
+ * $Id: radix.c,v 1.17 1999/04/29 03:22:16 luoqi Exp $
*/
/*
@@ -260,8 +260,11 @@ rn_match(v_arg, head)
/*
* This extra grot is in case we are explicitly asked
* to look up the default. Ugh!
+ *
+ * Never return the root node itself, it seems to cause a
+ * lot of confusion.
*/
- if ((t->rn_flags & RNF_ROOT) && t->rn_dupedkey)
+ if (t->rn_flags & RNF_ROOT)
t = t->rn_dupedkey;
return t;
on1:
OpenPOWER on IntegriCloud