diff options
author | Florian Westphal <fw@strlen.de> | 2018-04-10 03:00:24 -0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-04-16 11:47:27 -0400 |
commit | 2f6adf481527c8ab8033c601f55bfb5b3712b2ac (patch) | |
tree | 3012b4c102938470894324aa5c9c76e02f30dece | |
parent | 569ccae68b38654f04b6842b034aa33857f605fe (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.c | 8 |
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 | ||
3225 | err3: | 3225 | err4: |
3226 | ops->destroy(set); | 3226 | ops->destroy(set); |
3227 | err3: | ||
3228 | kfree(set->name); | ||
3227 | err2: | 3229 | err2: |
3228 | kvfree(set); | 3230 | kvfree(set); |
3229 | err1: | 3231 | err1: |