aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2018-04-10 03:00:24 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2018-04-16 11:47:27 -0400
commit2f6adf481527c8ab8033c601f55bfb5b3712b2ac (patch)
tree3012b4c102938470894324aa5c9c76e02f30dece
parent569ccae68b38654f04b6842b034aa33857f605fe (diff)
netfilter: nf_tables: free set name in error path
set->name must be free'd here in case ops->init fails. Fixes: 387454901bd6 ("netfilter: nf_tables: Allow set names of up to 255 chars") Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--net/netfilter/nf_tables_api.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index b1984f8f7253..102ad873acb4 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -3212,18 +3212,20 @@ static int nf_tables_newset(struct net *net, struct sock *nlsk,
3212 3212
3213 err = ops->init(set, &desc, nla); 3213 err = ops->init(set, &desc, nla);
3214 if (err < 0) 3214 if (err < 0)
3215 goto err2; 3215 goto err3;
3216 3216
3217 err = nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set); 3217 err = nft_trans_set_add(&ctx, NFT_MSG_NEWSET, set);
3218 if (err < 0) 3218 if (err < 0)
3219 goto err3; 3219 goto err4;
3220 3220
3221 list_add_tail_rcu(&set->list, &table->sets); 3221 list_add_tail_rcu(&set->list, &table->sets);
3222 table->use++; 3222 table->use++;
3223 return 0; 3223 return 0;
3224 3224
3225err3: 3225err4:
3226 ops->destroy(set); 3226 ops->destroy(set);
3227err3:
3228 kfree(set->name);
3227err2: 3229err2:
3228 kvfree(set); 3230 kvfree(set);
3229err1: 3231err1: