diff options
author | Florian Westphal <fw@strlen.de> | 2023-07-18 09:52:29 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2023-07-27 13:45:51 +0200 |
commit | 5fac9b7c16c50c6c7699517f582b56e3743f453a (patch) | |
tree | dcfead2e72694a85eb7bb3f43de650bfafa7d2d8 /lib/nlattr.c | |
parent | a927d77778e380ffd6ffea1f2037c6bdb23af99a (diff) |
netlink: allow be16 and be32 types in all uint policy checks
__NLA_IS_BEINT_TYPE(tp) isn't useful. NLA_BE16/32 are identical to
NLA_U16/32, the only difference is that it tells the netlink validation
functions that byteorder conversion might be needed before comparing
the value to the policy min/max ones.
After this change all policy macros that can be used with UINT types,
such as NLA_POLICY_MASK() can also be used with NLA_BE16/32.
This will be used to validate nf_tables flag attributes which
are in bigendian byte order.
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'lib/nlattr.c')
-rw-r--r-- | lib/nlattr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/nlattr.c b/lib/nlattr.c index 489e15bde5c1..7a2b6c38fd59 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -355,6 +355,12 @@ static int nla_validate_mask(const struct nla_policy *pt, case NLA_U64: value = nla_get_u64(nla); break; + case NLA_BE16: + value = ntohs(nla_get_be16(nla)); + break; + case NLA_BE32: + value = ntohl(nla_get_be32(nla)); + break; default: return -EINVAL; } |