netfilter: nf_conntrack_ipv6: Plug sk_buff leak in fragment handling
authorPhil Oester <kernel@linuxace.com>
Wed, 19 Jun 2013 10:49:51 +0000 (06:49 -0400)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 20 Jun 2013 10:01:24 +0000 (12:01 +0200)
In commit 4cdd3408 ("netfilter: nf_conntrack_ipv6: improve fragmentation
handling"), an sk_buff leak was introduced when dealing with reassembled
packets by grabbing a reference to the original skb instead of the
reassembled skb.  At this point, the leak only impacted conntracks with an
associated helper.

In commit 58a317f1 ("netfilter: ipv6: add IPv6 NAT support"), the bug was
expanded to include all reassembled packets with unconfirmed conntracks.

Fix this by grabbing a reference to the proper reassembled skb.  This
closes netfilter bugzilla #823.

Signed-off-by: Phil Oester <kernel@linuxace.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c

index 97bcf2bae8574a1a79d5410e18826f78e2ecc5dd..c9b6a6e6a1e8877dd634b51680fa2d5a5d9f2148 100644 (file)
@@ -204,7 +204,7 @@ static unsigned int __ipv6_conntrack_in(struct net *net,
                if (ct != NULL && !nf_ct_is_untracked(ct)) {
                        help = nfct_help(ct);
                        if ((help && help->helper) || !nf_ct_is_confirmed(ct)) {
-                               nf_conntrack_get_reasm(skb);
+                               nf_conntrack_get_reasm(reasm);
                                NF_HOOK_THRESH(NFPROTO_IPV6, hooknum, reasm,
                                               (struct net_device *)in,
                                               (struct net_device *)out,