From: Bill Fink <billfink@mindspring.com>
To: netfilter@vger.kernel.org, netfilter-devel@vger.kernel.org
Subject: conntrackd segfault on EPSV IPv6 ftp command when using ftp ExpectationSync
Date: Fri, 5 Jul 2013 02:03:12 -0400 [thread overview]
Message-ID: <20130705020312.25783ccd.billfink@mindspring.com> (raw)
[not sure whether to send to netfilter or netfilter-devel,
so sending to both, but trim replies as appropriate]
I am trying to use the ftp ExpectationSync capability of conntrackd
for both IPv4 and IPv6 for connections through a pair of bridged
firewalls (primary / hot backup). I have the following config
snippet in conntrackd.conf:
Options {
ExpectationSync {
ftp
sip
ras # for H.323
q.931 # for H.323
h.245 # for H.323
}
}
For IPv4, things work as expected. But when I try the basic
analogous IPv6 test to the suggested IPv4 test from the
documentation:
x100ssd2% nc 2001:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx 21
220 FTP Server ready.
USER anonymous
331 Anonymous login ok, send your complete email address as your password
PASS bill@
230-
*** Welcome to this anonymous ftp server! ***
You are user 1 out of a maximum of 10 authorized anonymous logins.
The current time here is Thu Jul 04 23:40:51 2013.
If you experience any problems here, contact : root@localhost
230 Anonymous login ok, restrictions apply.
EPSV
229 Entering Extended Passive Mode (|||1584|)
As soon as I enter the EPSV command, I get the following
conntrackd segfault:
Jul 5 00:41:06 sen-fw1 kernel: [274422.060695] conntrackd[4821]: segfault at 0 ip 000000000040c660 sp 00007fffebb098a8 error 4 in conntrackd[400000+3d000]
I am using a Fedora 17 3.7.3-101.fc17.x86_64 kernel with
conntrack-tools-1.4.0-1.fc17.x86_64.
I had to use the attached patch to get "conntrackd -R" to resync
both IPv4 and IPv6 (enabled with a "Family IPv4-IPv6" entry in
conntrackd.conf). It works well for me for the basic ct table,
but I'm not sure about the expect table part since I can't really
exercise it due to the segfault. Note the segfault also occurs
with the original unpatched conntrackd, so it's not related to
my patch.
Any help would be greatly appreciated.
-Thanks
-Bill
P.S. I am not subscribed to either netfilter or netfilter-devel.
Patch to add IPv6 to "conntrackd -R":
------------------------------------------------------------------------
diff -Nurp conntrack-tools-1.4.0.orig/src/netlink.c conntrack-tools-1.4.0/src/netlink.c
--- conntrack-tools-1.4.0.orig/src/netlink.c 2012-09-21 10:06:07.000000000 -0400
+++ conntrack-tools-1.4.0/src/netlink.c 2013-07-04 23:32:36.302310719 -0400
@@ -148,7 +148,16 @@ void nl_resize_socket_buffer(struct nfct
int nl_dump_conntrack_table(struct nfct_handle *h)
{
- return nfct_query(h, NFCT_Q_DUMP, &CONFIG(family));
+ int fam, ret;
+
+ if (!CONFIG(both_ipv4_ipv6))
+ return nfct_query(h, NFCT_Q_DUMP, &CONFIG(family));
+ fam = AF_INET;
+ ret = nfct_query(h, NFCT_Q_DUMP, &fam);
+ if (ret < 0)
+ return ret;
+ fam = AF_INET6;
+ return nfct_query(h, NFCT_Q_DUMP, &fam);
}
static int
@@ -380,7 +389,16 @@ int nl_get_expect(struct nfct_handle *h,
int nl_dump_expect_table(struct nfct_handle *h)
{
- return nfexp_query(h, NFCT_Q_DUMP, &CONFIG(family));
+ int fam, ret;
+
+ if (!CONFIG(both_ipv4_ipv6))
+ return nfexp_query(h, NFCT_Q_DUMP, &CONFIG(family));
+ fam = AF_INET;
+ ret = nfexp_query(h, NFCT_Q_DUMP, &fam);
+ if (ret < 0)
+ return ret;
+ fam = AF_INET6;
+ return nfexp_query(h, NFCT_Q_DUMP, &fam);
}
int nl_flush_expect_table(struct nfct_handle *h)
diff -Nurp conntrack-tools-1.4.0.orig/src/read_config_yy.y conntrack-tools-1.4.0/src/read_config_yy.y
--- conntrack-tools-1.4.0.orig/src/read_config_yy.y 2012-09-21 10:06:07.000000000 -0400
+++ conntrack-tools-1.4.0/src/read_config_yy.y 2013-03-20 18:47:36.391160857 -0400
@@ -1193,10 +1193,27 @@ scheduler_line : T_PRIO T_NUMBER
family : T_FAMILY T_STRING
{
- if (strncmp($2, "IPv6", strlen("IPv6")) == 0)
+ if (strncmp($2, "IPv6-IPv4", strlen("IPv6-IPv4")) == 0) {
conf.family = AF_INET6;
- else
+ conf.both_ipv4_ipv6 = 1;
+ }
+ else if (strncmp($2, "IPv6", strlen("IPv6")) == 0) {
+ conf.family = AF_INET6;
+ conf.both_ipv4_ipv6 = 0;
+ }
+ else if (strncmp($2, "IPv4-IPv6", strlen("IPv4-IPv6")) == 0) {
+ conf.family = AF_INET;
+ conf.both_ipv4_ipv6 = 1;
+ }
+ else if (strncmp($2, "IPv4", strlen("IPv4")) == 0) {
conf.family = AF_INET;
+ conf.both_ipv4_ipv6 = 0;
+ }
+ else {
+ print_err(CTD_CFG_WARN, "%s is not a valid Family, "
+ "ignoring", $2);
+ break;
+ }
};
event_iterations_limit : T_EVENT_ITER_LIMIT T_NUMBER
@@ -1864,8 +1881,10 @@ init_config(char *filename)
fclose(fp);
/* default to IPv4 */
- if (CONFIG(family) == 0)
+ if (CONFIG(family) == 0) {
CONFIG(family) = AF_INET;
+ CONFIG(both_ipv4_ipv6) = 0;
+ }
/* set to default is not specified */
if (strcmp(CONFIG(lockfile), "") == 0)
next reply other threads:[~2013-07-05 6:03 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-05 6:03 Bill Fink [this message]
2013-07-05 8:19 ` conntrackd segfault on EPSV IPv6 ftp command when using ftp ExpectationSync Florian Westphal
2013-07-05 19:45 ` Bill Fink
2013-07-05 23:52 ` Bill Fink
2013-07-06 13:23 ` Pablo Neira Ayuso
2013-07-07 7:04 ` Bill Fink
2013-07-09 5:30 ` Bill Fink
2013-07-09 18:22 ` Pablo Neira Ayuso
2013-07-10 9:58 ` Bill Fink
2013-07-10 22:08 ` Pablo Neira Ayuso
2013-07-11 0:48 ` Pablo Neira Ayuso
2013-07-11 15:19 ` Bill Fink
2013-07-12 7:01 ` Bill Fink
2013-07-15 12:49 ` Pablo Neira Ayuso
2013-07-16 5:55 ` Bill Fink
2013-07-16 21:33 ` Pablo Neira Ayuso
2013-07-16 21:37 ` Pablo Neira Ayuso
2013-07-22 7:00 ` Bill Fink
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=20130705020312.25783ccd.billfink@mindspring.com \
--to=billfink@mindspring.com \
--cc=netfilter-devel@vger.kernel.org \
--cc=netfilter@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox