]> git.baikalelectronics.ru Git - kernel.git/commitdiff
netfilter: nft_redir: correct length for loading protocol registers
authorJeremy Sowden <jeremy@azazel.net>
Tue, 7 Mar 2023 23:22:58 +0000 (23:22 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Mar 2023 12:33:42 +0000 (13:33 +0100)
[ Upstream commit 26975ff87d6e9e27bf5526faaca925d6b7e20292 ]

The values in the protocol registers are two bytes wide.  However, when
parsing the register loads, the code currently uses the larger 16-byte
size of a `union nf_inet_addr`.  Change it to use the (correct) size of
a `union nf_conntrack_man_proto` instead.

Fixes: 78ee2ed32535 ("netfilter: nf_tables: introduce nft_validate_register_load()")
Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Reviewed-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/netfilter/nft_redir.c

index 5086adfe731cb6418c52e9c11b3f8ef3d82c1fbd..7ae330d75ac7be2e991a5f3ca5cc1aacd5f2bc24 100644 (file)
@@ -48,7 +48,7 @@ static int nft_redir_init(const struct nft_ctx *ctx,
        unsigned int plen;
        int err;
 
-       plen = sizeof_field(struct nf_nat_range, min_addr.all);
+       plen = sizeof_field(struct nf_nat_range, min_proto.all);
        if (tb[NFTA_REDIR_REG_PROTO_MIN]) {
                err = nft_parse_register_load(tb[NFTA_REDIR_REG_PROTO_MIN],
                                              &priv->sreg_proto_min, plen);