* [PATCH] IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input())
@ 2010-07-16 10:38 Arnaud Ebalard
2010-07-18 22:05 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Arnaud Ebalard @ 2010-07-16 10:38 UTC (permalink / raw)
To: David S. Miller, Hideaki YOSHIFUJI; +Cc: netdev
Hi,
The input handler for Type 2 Routing Header (mip6_rthdr_input())
checks if the CoA in the packet matches the CoA in the XFRM state.
Current check is buggy: it compares the adddress in the Type 2
Routing Header, i.e. the HoA, against the expected CoA in the state.
The comparison should be made against the address in the destination
field of the IPv6 header.
The bug remained unnoticed because the main (and possibly only current)
user of the code (UMIP MIPv6 Daemon) initializes the XFRM state with the
unspecified address, i.e. explicitly allows everything.
Yoshifuji-san, can you ack that one?
Cheers,
a+
Signed-off-by: Arnaud Ebalard <arno@natisbad.org>
---
net/ipv6/mip6.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c
index 2794b60..d6e9599 100644
--- a/net/ipv6/mip6.c
+++ b/net/ipv6/mip6.c
@@ -347,11 +347,12 @@ static const struct xfrm_type mip6_destopt_type =
static int mip6_rthdr_input(struct xfrm_state *x, struct sk_buff *skb)
{
+ struct ipv6hdr *iph = ipv6_hdr(skb);
struct rt2_hdr *rt2 = (struct rt2_hdr *)skb->data;
int err = rt2->rt_hdr.nexthdr;
spin_lock(&x->lock);
- if (!ipv6_addr_equal(&rt2->addr, (struct in6_addr *)x->coaddr) &&
+ if (!ipv6_addr_equal(&iph->daddr, (struct in6_addr *)x->coaddr) &&
!ipv6_addr_any((struct in6_addr *)x->coaddr))
err = -ENOENT;
spin_unlock(&x->lock);
--
1.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input())
2010-07-16 10:38 [PATCH] IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input()) Arnaud Ebalard
@ 2010-07-18 22:05 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2010-07-18 22:05 UTC (permalink / raw)
To: arno; +Cc: yoshfuji, netdev
From: arno@natisbad.org (Arnaud Ebalard)
Date: Fri, 16 Jul 2010 12:38:44 +0200
> The input handler for Type 2 Routing Header (mip6_rthdr_input())
> checks if the CoA in the packet matches the CoA in the XFRM state.
>
> Current check is buggy: it compares the adddress in the Type 2
> Routing Header, i.e. the HoA, against the expected CoA in the state.
> The comparison should be made against the address in the destination
> field of the IPv6 header.
>
> The bug remained unnoticed because the main (and possibly only current)
> user of the code (UMIP MIPv6 Daemon) initializes the XFRM state with the
> unspecified address, i.e. explicitly allows everything.
>
> Yoshifuji-san, can you ack that one?
>
> Signed-off-by: Arnaud Ebalard <arno@natisbad.org>
I've reviewed this and it definitely looks correct to me.
Applied, thanks Arnaud.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-07-18 22:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-16 10:38 [PATCH] IPv6: fix CoA check in RH2 input handler (mip6_rthdr_input()) Arnaud Ebalard
2010-07-18 22:05 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).