aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Chion Tang <sdspeedonion@gmail.com> 2018-04-28 07:13:27 +0100
committerGravatar Chion Tang <sdspeedonion@gmail.com> 2018-04-28 07:13:27 +0100
commit1d81c326a1e0e974a78d0338003ea3cd188dc3f4 (patch)
treed312057ffd8f37050a345afe57cecc48c56222a2
parentfix: conntrack event notifier conflicts (diff)
downloadnetfilter-full-cone-nat-1d81c326a1e0e974a78d0338003ea3cd188dc3f4.tar.gz
netfilter-full-cone-nat-1d81c326a1e0e974a78d0338003ea3cd188dc3f4.tar.bz2
netfilter-full-cone-nat-1d81c326a1e0e974a78d0338003ea3cd188dc3f4.zip
fix: conntrack rcu reference leak
-rw-r--r--xt_FULLCONENAT.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xt_FULLCONENAT.c b/xt_FULLCONENAT.c
index 00ec5d6..cf6f8aa 100644
--- a/xt_FULLCONENAT.c
+++ b/xt_FULLCONENAT.c
@@ -197,6 +197,7 @@ static int check_mapping(struct nat_mapping* mapping, struct net *net, const str
struct list_head *iter, *tmp;
struct nat_mapping_original_tuple *original_tuple_item;
struct nf_conntrack_tuple_hash *tuple_hash;
+ struct nf_conn *ct;
if (mapping == NULL) {
return 0;
@@ -223,6 +224,10 @@ static int check_mapping(struct nat_mapping* mapping, struct net *net, const str
list_del(&original_tuple_item->node);
kfree(original_tuple_item);
(mapping->refer_count)--;
+ } else {
+ ct = nf_ct_tuplehash_to_ctrack(tuple_hash);
+ if (ct != NULL)
+ nf_ct_put(ct);
}
}