summaryrefslogtreecommitdiff
path: root/net/netfilter/nft_byteorder.c
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2023-06-21 22:11:03 +0300
committerPablo Neira Ayuso <pablo@netfilter.org>2023-06-26 09:05:57 +0300
commita412dbf40ff37515acca4bba666f5386aa37246e (patch)
treed29ebda49810ab08757b1d5c33f2ea6001d04df1 /net/netfilter/nft_byteorder.c
parent079cd633219d7298d087cd115c17682264244c18 (diff)
downloadlinux-a412dbf40ff37515acca4bba666f5386aa37246e.tar.xz
netfilter: nf_tables: limit allowed range via nla_policy
These NLA_U32 types get stored in u8 fields, reject invalid values instead of silently casting to u8. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net/netfilter/nft_byteorder.c')
-rw-r--r--net/netfilter/nft_byteorder.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/netfilter/nft_byteorder.c b/net/netfilter/nft_byteorder.c
index b66647a5a171..9a85e797ed58 100644
--- a/net/netfilter/nft_byteorder.c
+++ b/net/netfilter/nft_byteorder.c
@@ -88,9 +88,9 @@ void nft_byteorder_eval(const struct nft_expr *expr,
static const struct nla_policy nft_byteorder_policy[NFTA_BYTEORDER_MAX + 1] = {
[NFTA_BYTEORDER_SREG] = { .type = NLA_U32 },
[NFTA_BYTEORDER_DREG] = { .type = NLA_U32 },
- [NFTA_BYTEORDER_OP] = { .type = NLA_U32 },
- [NFTA_BYTEORDER_LEN] = { .type = NLA_U32 },
- [NFTA_BYTEORDER_SIZE] = { .type = NLA_U32 },
+ [NFTA_BYTEORDER_OP] = NLA_POLICY_MAX(NLA_BE32, 255),
+ [NFTA_BYTEORDER_LEN] = NLA_POLICY_MAX(NLA_BE32, 255),
+ [NFTA_BYTEORDER_SIZE] = NLA_POLICY_MAX(NLA_BE32, 255),
};
static int nft_byteorder_init(const struct nft_ctx *ctx,