Discussion:
[PATCH] ipv4: fix a potential use after free in fou.c
r***@gmail.com
2014-10-17 08:53:47 UTC
Permalink
From: Li RongQing <***@gmail.com>

pskb_may_pull() maybe change skb->data and make uh pointer oboslete,
so reload uh and guehdr

Fixes: 37dd0247 ("gue: Receive side for Generic UDP Encapsulation")
Cc: Tom Herbert <***@google.com>
Signed-off-by: Li RongQing <***@gmail.com>
---
net/ipv4/fou.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c
index efa70ad..32e7892 100644
--- a/net/ipv4/fou.c
+++ b/net/ipv4/fou.c
@@ -87,6 +87,9 @@ static int gue_udp_recv(struct sock *sk, struct sk_buff *skb)
if (!pskb_may_pull(skb, len))
goto drop;

+ uh = udp_hdr(skb);
+ guehdr = (struct guehdr *)&uh[1];
+
if (guehdr->version != 0)
goto drop;
--
1.7.10.4
David Miller
2014-10-18 03:46:24 UTC
Permalink
From: ***@gmail.com
Date: Fri, 17 Oct 2014 16:53:47 +0800
Post by r***@gmail.com
pskb_may_pull() maybe change skb->data and make uh pointer oboslete,
so reload uh and guehdr
Fixes: 37dd0247 ("gue: Receive side for Generic UDP Encapsulation")
Applied.

Loading...