forked from Minki/linux
netfilter: nft_compat: check match/targetinfo attr size
We copy according to ->target|matchsize, so check that the netlink attribute (which can include padding and might be larger) contains enough data. Reported-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
d387eaf51f
commit
f0716cd6eb
@ -660,6 +660,9 @@ nft_match_select_ops(const struct nft_ctx *ctx,
|
||||
if (IS_ERR(match))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
if (match->matchsize > nla_len(tb[NFTA_MATCH_INFO]))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
/* This is the first time we use this match, allocate operations */
|
||||
nft_match = kzalloc(sizeof(struct nft_xt), GFP_KERNEL);
|
||||
if (nft_match == NULL)
|
||||
@ -740,6 +743,9 @@ nft_target_select_ops(const struct nft_ctx *ctx,
|
||||
if (IS_ERR(target))
|
||||
return ERR_PTR(-ENOENT);
|
||||
|
||||
if (target->targetsize > nla_len(tb[NFTA_TARGET_INFO]))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
/* This is the first time we use this target, allocate operations */
|
||||
nft_target = kzalloc(sizeof(struct nft_xt), GFP_KERNEL);
|
||||
if (nft_target == NULL)
|
||||
|
Loading…
Reference in New Issue
Block a user