Skip to content

Commit

Permalink
netfilter: nft_tproxy: Fix port selector on Big Endian
Browse files Browse the repository at this point in the history
On Big Endian architectures, u16 port value was extracted from the wrong
parts of u32 sreg_port, just like commit 1059660 ("netfilter:
nf_tables: fix mismatch in big-endian system") describes.

Fixes: 4ed8eb6 ("netfilter: nf_tables: Add native tproxy support")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Acked-by: Florian Westphal <fw@strlen.de>
Acked-by: Máté Eckl <ecklm94@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Phil Sutter authored and Pablo Neira Ayuso committed Dec 20, 2019
1 parent e608f63 commit 8cb4ec4
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions net/netfilter/nft_tproxy.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ static void nft_tproxy_eval_v4(const struct nft_expr *expr,
taddr = nf_tproxy_laddr4(skb, taddr, iph->daddr);

if (priv->sreg_port)
tport = regs->data[priv->sreg_port];
tport = nft_reg_load16(&regs->data[priv->sreg_port]);
if (!tport)
tport = hp->dest;

Expand Down Expand Up @@ -117,7 +117,7 @@ static void nft_tproxy_eval_v6(const struct nft_expr *expr,
taddr = *nf_tproxy_laddr6(skb, &taddr, &iph->daddr);

if (priv->sreg_port)
tport = regs->data[priv->sreg_port];
tport = nft_reg_load16(&regs->data[priv->sreg_port]);
if (!tport)
tport = hp->dest;

Expand Down

0 comments on commit 8cb4ec4

Please sign in to comment.