]> git.hungrycats.org Git - linux/commitdiff
act_nat: fix wild pointer
authorChangli Gao <xiaosuo@gmail.com>
Thu, 29 Jul 2010 13:41:46 +0000 (13:41 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 26 Aug 2010 23:46:01 +0000 (16:46 -0700)
[ Upstream commit 072d79a31a3b870b49886f4347e23f81b7eca3ac ]

pskb_may_pull() may change skb pointers, so adjust icmph after pskb_may_pull().

Signed-off-by: Changli Gao <xiaosuo@gmail.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/sched/act_nat.c

index 4e7c24ae2ac55b5edd6939280b31f1796bddf3e4..abbf4fa66a0b93a23a830ecdb7535ae8ee0d3e38 100644 (file)
@@ -218,6 +218,7 @@ static int tcf_nat(struct sk_buff *skb, struct tc_action *a,
                if (!pskb_may_pull(skb, ihl + sizeof(*icmph) + sizeof(*iph)))
                        goto drop;
 
+               icmph = (void *)(skb_network_header(skb) + ihl);
                iph = (void *)(icmph + 1);
                if (egress)
                        addr = iph->daddr;