mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
netfilter: nfnetlink_osf: fix mss parsing on big-endian architectures
The MSS calculation in nf_osf_match_one() manually shifts bytes to
construct a 16-bit value before passing it to ntohs().
This works on little-endian hosts but it does not work on big-endian as
the bytes are being always shifted and set in the same way for all
architectures.
Use get_unaligned_be16() to fix this on big-endian systems. It also
simplifies the code.
Fixes: 11eeef41d5 ("netfilter: passive OS fingerprint xtables match")
Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
4a15044a2b
commit
a625c94144
|
|
@ -95,11 +95,7 @@ static bool nf_osf_match_one(const struct sk_buff *skb,
|
|||
|
||||
switch (*optp) {
|
||||
case OSFOPT_MSS:
|
||||
mss = optp[3];
|
||||
mss <<= 8;
|
||||
mss |= optp[2];
|
||||
|
||||
mss = ntohs((__force __be16)mss);
|
||||
mss = get_unaligned_be16(&optp[2]);
|
||||
break;
|
||||
case OSFOPT_TS:
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user