summaryrefslogtreecommitdiff
path: root/sys/net
diff options
context:
space:
mode:
authorClaudio Jeker <claudio@cvs.openbsd.org>2009-03-02 14:39:25 +0000
committerClaudio Jeker <claudio@cvs.openbsd.org>2009-03-02 14:39:25 +0000
commit44b45959b1b77c9051f78ff86e9a76438156aaaf (patch)
tree4f08badc1a8e523c6d2623c23560df4fdb623956 /sys/net
parent2b2bb8aed353f7593d0bf5944501f22173c45b35 (diff)
Make sure rt_gateway is not NULL in rt_mpath_matchgate(). It is possible to
hit this case with a root node that comes with no real rtentry attached to it. Problem found by Mischa Diehm, OK henning@
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/radix_mpath.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/net/radix_mpath.c b/sys/net/radix_mpath.c
index 3856192e2a6..23eec409a64 100644
--- a/sys/net/radix_mpath.c
+++ b/sys/net/radix_mpath.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: radix_mpath.c,v 1.16 2009/01/29 13:14:08 claudio Exp $ */
+/* $OpenBSD: radix_mpath.c,v 1.17 2009/03/02 14:39:24 claudio Exp $ */
/* $KAME: radix_mpath.c,v 1.13 2002/10/28 21:05:59 itojun Exp $ */
/*
@@ -261,7 +261,8 @@ rt_mpath_matchgate(struct rtentry *rt, struct sockaddr *gate, u_int8_t prio)
return rt;
if (!gate)
return NULL;
-
+ if (!rt->rt_gateway)
+ continue;
if (rt->rt_gateway->sa_len == gate->sa_len &&
!memcmp(rt->rt_gateway, gate, gate->sa_len))
break;