[PATCH 3.12 71/77] netfilter: fix wrong byte order in nf_ct_seqadj_set internal information
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2014-01-14 00:29:25
Also in:
lkml
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2014-01-14 00:29:25
Also in:
lkml
3.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Phil Oester <redacted> commit 23dfe136e2bf8d9ea1095704c535368a9bc721da upstream. In commit 41d73ec053d2, sequence number adjustments were moved to a separate file. Unfortunately, the sequence numbers that are stored in the nf_ct_seqadj structure are expressed in host byte order. The necessary ntohl call was removed when the call to adjust_tcp_sequence was collapsed into nf_ct_seqadj_set. This broke the FTP NAT helper. Fix it by adding back the byte order conversions. Reported-by: Dawid Stawiarski <redacted> Signed-off-by: Phil Oester <redacted> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> --- net/netfilter/nf_conntrack_seqadj.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
--- a/net/netfilter/nf_conntrack_seqadj.c
+++ b/net/netfilter/nf_conntrack_seqadj.c@@ -41,8 +41,8 @@ int nf_ct_seqadj_set(struct nf_conn *ct, spin_lock_bh(&ct->lock); this_way = &seqadj->seq[dir]; if (this_way->offset_before == this_way->offset_after || - before(this_way->correction_pos, seq)) { - this_way->correction_pos = seq; + before(this_way->correction_pos, ntohl(seq))) { + this_way->correction_pos = ntohl(seq); this_way->offset_before = this_way->offset_after; this_way->offset_after += off; }