All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick McHardy <kaber@trash.net>
To: davem@davemloft.net
Cc: netfilter-devel@lists.netfilter.org, Patrick McHardy <kaber@trash.net>
Subject: [NETFILTER 04/08]: nf_conntrack: Don't track locally generated special ICMP error
Date: Sat, 14 Jul 2007 17:12:39 +0200 (MEST)	[thread overview]
Message-ID: <20070714151155.9829.50994.sendpatchset@localhost.localdomain> (raw)
In-Reply-To: <20070714151150.9829.47674.sendpatchset@localhost.localdomain>

[NETFILTER]: nf_conntrack: Don't track locally generated special ICMP error

The conntrack assigned to locally generated ICMP error is usually the one
assigned to the original packet which has caused the error. But if
the original packet is handled as invalid by nf_conntrack, no conntrack
is assigned to the original packet. Then nf_ct_attach() cannot assign
any conntrack to the ICMP error packet. In that case the current
nf_conntrack_icmp assigns appropriate conntrack to it. But the current
code mistakes the direction of the packet. As a result, NAT code mistakes
the address to be mangled.

To fix the bug, this changes nf_conntrack_icmp not to assign conntrack
to such ICMP error. Actually no address is necessary to be mangled
in this case.

Spotted by Jordan Russell.

Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Signed-off-by: Patrick McHardy <kaber@trash.net>

---
commit 28b86df4d02014ae5ce0be0e82c074f15ea0dabf
tree 4f1d74fa6059740eb380260300f87e39c4e911ac
parent dabf3efb72da4003b4e22a8159e9ad3007502683
author Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp> Sat, 14 Jul 2007 17:02:19 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 14 Jul 2007 17:02:19 +0200

 net/ipv4/netfilter/nf_conntrack_proto_icmp.c |   22 +++++-----------------
 1 files changed, 5 insertions(+), 17 deletions(-)

diff --git a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
index b8b7999..f965733 100644
--- a/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
+++ b/net/ipv4/netfilter/nf_conntrack_proto_icmp.c
@@ -165,25 +165,13 @@ icmp_error_message(struct sk_buff *skb,
 
 	h = nf_conntrack_find_get(&innertuple);
 	if (!h) {
-		/* Locally generated ICMPs will match inverted if they
-		   haven't been SNAT'ed yet */
-		/* FIXME: NAT code has to handle half-done double NAT --RR */
-		if (hooknum == NF_IP_LOCAL_OUT)
-			h = nf_conntrack_find_get(&origtuple);
-
-		if (!h) {
-			pr_debug("icmp_error_message: no match\n");
-			return -NF_ACCEPT;
-		}
-
-		/* Reverse direction from that found */
-		if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
-			*ctinfo += IP_CT_IS_REPLY;
-	} else {
-		if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
-			*ctinfo += IP_CT_IS_REPLY;
+		pr_debug("icmp_error_message: no match\n");
+		return -NF_ACCEPT;
 	}
 
+	if (NF_CT_DIRECTION(h) == IP_CT_DIR_REPLY)
+		*ctinfo += IP_CT_IS_REPLY;
+
 	/* Update skb to refer to this connection */
 	skb->nfct = &nf_ct_tuplehash_to_ctrack(h)->ct_general;
 	skb->nfctinfo = *ctinfo;

  parent reply	other threads:[~2007-07-14 15:12 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-14 15:12 [NETFILTER 00/08]: Netfilter Update part II Patrick McHardy
2007-07-14 15:12 ` [NETFILTER 01/08]: nf_conntrack: Increment error count on parsing IPv4 header Patrick McHardy
2007-07-15  3:44   ` David Miller
2007-07-14 15:12 ` [NETFILTER 02/08]: nf_conntrack: make l3proto->prepare() generic and renames it Patrick McHardy
2007-07-15  3:45   ` David Miller
2007-07-14 15:12 ` [NETFILTER 03/08]: nf_conntrack: Introduces nf_ct_get_tuplepr and uses it Patrick McHardy
2007-07-14 15:12 ` Patrick McHardy [this message]
2007-07-15  3:45   ` [NETFILTER 04/08]: nf_conntrack: Don't track locally generated special ICMP error David Miller
2007-07-14 15:12 ` [NETFILTER 05/08]: Lower *tables printk severity Patrick McHardy
2007-07-15  3:46   ` David Miller
2007-07-14 15:12 ` [NETFILTER 06/08]: x_tables: add connlimit match Patrick McHardy
2007-07-15  3:47   ` David Miller
2007-07-14 15:12 ` [NETFILTER 07/08]: nf_conntrack: mark protocols __read_mostly Patrick McHardy
2007-07-15  3:48   ` David Miller
2007-07-14 15:12 ` [NETFILTER 08/08]: nf_conntrack: UDPLITE support Patrick McHardy
2007-07-14 16:54   ` Yasuyuki KOZAKAI
     [not found]   ` <200707141654.l6EGs6XG008905@toshiba.co.jp>
2007-07-14 23:05     ` Patrick McHardy
2007-07-16  8:07       ` Yasuyuki KOZAKAI
2007-07-15  3:48   ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070714151155.9829.50994.sendpatchset@localhost.localdomain \
    --to=kaber@trash.net \
    --cc=davem@davemloft.net \
    --cc=netfilter-devel@lists.netfilter.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.