netfilter: nf_nat: don't check for port change on ICMP tuples
commit 38fe36a248 upstream.
ICMP tuples have id in src and type/code in dst.
So comparing src.u.all with dst.u.all will always fail here
and ip_xfrm_me_harder() is called for every ICMP packet,
even if there was no NAT.
Signed-off-by: Ulrich Weber <ulrich.weber@sophos.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
9e8b32b0a0
commit
328325bf4f
1 changed files with 4 additions and 2 deletions
|
|
@ -194,7 +194,8 @@ nf_nat_out(unsigned int hooknum,
|
|||
|
||||
if ((ct->tuplehash[dir].tuple.src.u3.ip !=
|
||||
ct->tuplehash[!dir].tuple.dst.u3.ip) ||
|
||||
(ct->tuplehash[dir].tuple.src.u.all !=
|
||||
(ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP &&
|
||||
ct->tuplehash[dir].tuple.src.u.all !=
|
||||
ct->tuplehash[!dir].tuple.dst.u.all)
|
||||
)
|
||||
return ip_xfrm_me_harder(skb) == 0 ? ret : NF_DROP;
|
||||
|
|
@ -230,7 +231,8 @@ nf_nat_local_fn(unsigned int hooknum,
|
|||
ret = NF_DROP;
|
||||
}
|
||||
#ifdef CONFIG_XFRM
|
||||
else if (ct->tuplehash[dir].tuple.dst.u.all !=
|
||||
else if (ct->tuplehash[dir].tuple.dst.protonum != IPPROTO_ICMP &&
|
||||
ct->tuplehash[dir].tuple.dst.u.all !=
|
||||
ct->tuplehash[!dir].tuple.src.u.all)
|
||||
if (ip_xfrm_me_harder(skb))
|
||||
ret = NF_DROP;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue