netfilter: Wrong icmp6 checksum for ICMPV6_TIME_EXCEED in reverse SNATv6 path
authorDave Johnson <dave-kernel@centerclick.org>
Mon, 24 Apr 2017 13:11:24 +0000 (09:11 -0400)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 25 Apr 2017 09:10:38 +0000 (11:10 +0200)
commit9dd2ab609eef736d5639e0de1bcc2e71e714b28e
tree269ceeff49482d9113feff5b79b5a69e7dfd39ae
parent277a292835c196894ef895d5e1fd6170bb916f55
netfilter: Wrong icmp6 checksum for ICMPV6_TIME_EXCEED in reverse SNATv6 path

When recalculating the outer ICMPv6 checksum for a reverse path NATv6
such as ICMPV6_TIME_EXCEED nf_nat_icmpv6_reply_translation() was
accessing data beyond the headlen of the skb for non-linear skb.  This
resulted in incorrect ICMPv6 checksum as garbage data was used.

Patch replaces csum_partial() with skb_checksum() which supports
non-linear skbs similar to nf_nat_icmp_reply_translation() from ipv4.

Signed-off-by: Dave Johnson <dave-kernel@centerclick.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv6/netfilter/nf_nat_l3proto_ipv6.c