* buffer overflow in ip_ct_{ftp,tftp,irc}
@ 2005-09-07 23:11 Samir Bellabes
2005-09-07 23:15 ` Samir Bellabes
0 siblings, 1 reply; 14+ messages in thread
From: Samir Bellabes @ 2005-09-07 23:11 UTC (permalink / raw)
To: netfilter-devel; +Cc: Harald Welte, David S. Miller
[-- Attachment #1: Type: text/plain, Size: 310 bytes --]
Hi,
when loading ip_conntrack_{ftp,tftp,irc} with 'ports=1234567890'
parameter option for example, a buffer overflow occur when :
sprintf(tmpname, "ftp-%d", ports[i]);
because of sizeof("ftp-1234567890") > 10
10 is the size of each array *_names[port][10]
Please apply this patch.
regards,
Samir Bellabes
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: nf_bad_param_port.patch --]
[-- Type: text/x-patch, Size: 2832 bytes --]
tree f8f9de37b0294e8049a959dfa5acc2efc64ab231
parent 48bc41a49c4f3aa760dff84e7f71437f5ed520fe
author Samir Bellabes <sbellabes@mandriva.com> 1126118922 +0200
committer Samir Bellabes <sbellabes@mandriva.com> 1126118922 +0200
[NETFILTER] Check for bad parameter value of 'ports' in ip_ct_{ftp,tftp,irc}
A buffer overflow occur when parameter 'ports' value is > 65535 :
if the number of digits of ports exceeds, for the ftp example:
sizeof ftp_names[A_PORT][10] - strlen("ftp-") = 10-4 = 6
then : sprintf(tmpname, "ftp-%d", ports[i]) produce the overflow.
This patch checks for 0 < port < 65356.
Signed-off-by: Samir Bellabes <sbellabes@mandriva.com>
------------------------------------------------------------------------------
ip_conntrack_ftp.c | 7 +++++++
ip_conntrack_irc.c | 7 +++++++
ip_conntrack_tftp.c | 7 +++++++
3 files changed, 21 insertions(+)
------------------------------------------------------------------------------
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -478,6 +478,13 @@ static int __init init(void)
ports[ports_c++] = FTP_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING "ip_ct_ftp: ERROR port"
+ "should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
ftp[i].tuple.src.u.tcp.port = htons(ports[i]);
ftp[i].tuple.dst.protonum = IPPROTO_TCP;
ftp[i].mask.src.u.tcp.port = 0xFFFF;
diff --git a/net/ipv4/netfilter/ip_conntrack_irc.c b/net/ipv4/netfilter/ip_conntrack_irc.c
--- a/net/ipv4/netfilter/ip_conntrack_irc.c
+++ b/net/ipv4/netfilter/ip_conntrack_irc.c
@@ -268,6 +268,13 @@ static int __init init(void)
ports[ports_c++] = IRC_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING "ip_conntrack_irc: ERROR port"
+ "should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
hlpr = &irc_helpers[i];
hlpr->tuple.src.u.tcp.port = htons(ports[i]);
hlpr->tuple.dst.protonum = IPPROTO_TCP;
diff --git a/net/ipv4/netfilter/ip_conntrack_tftp.c b/net/ipv4/netfilter/ip_conntrack_tftp.c
--- a/net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_tftp.c
@@ -122,6 +122,13 @@ static int __init init(void)
ports[ports_c++] = TFTP_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING
+ "ERROR port should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
/* Create helper structure */
memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-07 23:11 buffer overflow in ip_ct_{ftp,tftp,irc} Samir Bellabes
@ 2005-09-07 23:15 ` Samir Bellabes
2005-09-07 23:43 ` Pablo Neira
0 siblings, 1 reply; 14+ messages in thread
From: Samir Bellabes @ 2005-09-07 23:15 UTC (permalink / raw)
To: Samir Bellabes; +Cc: Harald Welte, netfilter-devel, David S. Miller
[-- Attachment #1: Type: text/plain, Size: 375 bytes --]
Samir Bellabes <sbellabes@mandriva.com> writes:
> when loading ip_conntrack_{ftp,tftp,irc} with 'ports=1234567890'
> parameter option for example, a buffer overflow occur when :
> sprintf(tmpname, "ftp-%d", ports[i]);
> because of sizeof("ftp-1234567890") > 10
> 10 is the size of each array *_names[port][10]
Resending patch with a better changelog.
Sorry for the noise.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: nf_bad_param_port.patch --]
[-- Type: text/x-patch, Size: 2854 bytes --]
tree f8f9de37b0294e8049a959dfa5acc2efc64ab231
parent 48bc41a49c4f3aa760dff84e7f71437f5ed520fe
author Samir Bellabes <sbellabes@mandriva.com> 1126118922 +0200
committer Samir Bellabes <sbellabes@mandriva.com> 1126118922 +0200
[NETFILTER] Check for bad parameter value of 'ports' in ip_ct_{ftp,tftp,irc}
A buffer overflow occur when parameter 'ports' value is > 65535 :
if the number of digits of ports exceeds, for the ftp example:
10 - strlen("ftp-") = 6
then : sprintf(tmpname, "ftp-%d", ports[i]) produce the overflow.
10 is the size of each char array *_names[A_PORT][10]
This patch checks for 0 < port < 65536.
Signed-off-by: Samir Bellabes <sbellabes@mandriva.com>
------------------------------------------------------------------------------
ip_conntrack_ftp.c | 7 +++++++
ip_conntrack_irc.c | 7 +++++++
ip_conntrack_tftp.c | 7 +++++++
3 files changed, 21 insertions(+)
------------------------------------------------------------------------------
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -478,6 +478,13 @@ static int __init init(void)
ports[ports_c++] = FTP_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING "ip_ct_ftp: ERROR port"
+ "should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
ftp[i].tuple.src.u.tcp.port = htons(ports[i]);
ftp[i].tuple.dst.protonum = IPPROTO_TCP;
ftp[i].mask.src.u.tcp.port = 0xFFFF;
diff --git a/net/ipv4/netfilter/ip_conntrack_irc.c b/net/ipv4/netfilter/ip_conntrack_irc.c
--- a/net/ipv4/netfilter/ip_conntrack_irc.c
+++ b/net/ipv4/netfilter/ip_conntrack_irc.c
@@ -268,6 +268,13 @@ static int __init init(void)
ports[ports_c++] = IRC_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING "ip_conntrack_irc: ERROR port"
+ "should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
hlpr = &irc_helpers[i];
hlpr->tuple.src.u.tcp.port = htons(ports[i]);
hlpr->tuple.dst.protonum = IPPROTO_TCP;
diff --git a/net/ipv4/netfilter/ip_conntrack_tftp.c b/net/ipv4/netfilter/ip_conntrack_tftp.c
--- a/net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_tftp.c
@@ -122,6 +122,13 @@ static int __init init(void)
ports[ports_c++] = TFTP_PORT;
for (i = 0; i < ports_c; i++) {
+ /* don't allow bad port values */
+ if (ports[i] < 1 || ports[i] > 65535) {
+ printk(KERN_WARNING
+ "ERROR port should be between 1 and 65535\n");
+ fini();
+ return -EINVAL;
+ }
/* Create helper structure */
memset(&tftp[i], 0, sizeof(struct ip_conntrack_helper));
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-07 23:15 ` Samir Bellabes
@ 2005-09-07 23:43 ` Pablo Neira
2005-09-07 23:48 ` Pablo Neira
0 siblings, 1 reply; 14+ messages in thread
From: Pablo Neira @ 2005-09-07 23:43 UTC (permalink / raw)
To: Samir Bellabes; +Cc: Harald Welte, netfilter-devel, David S. Miller
Samir Bellabes wrote:
> for (i = 0; i < ports_c; i++) {
> + /* don't allow bad port values */
> + if (ports[i] < 1 || ports[i] > 65535) {
> + printk(KERN_WARNING "ip_ct_ftp: ERROR port"
> + "should be between 1 and 65535\n");
> + fini();
> + return -EINVAL;
> + }
Better something like this?
-static int ports[MAX_PORTS];
+static short
ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
--
Pablo
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-07 23:43 ` Pablo Neira
@ 2005-09-07 23:48 ` Pablo Neira
2005-09-09 22:59 ` Patrick McHardy
2005-09-10 7:38 ` [PATCH] " Harald Welte
0 siblings, 2 replies; 14+ messages in thread
From: Pablo Neira @ 2005-09-07 23:48 UTC (permalink / raw)
To: Pablo Neira
Cc: Harald Welte, netfilter-devel, Samir Bellabes, David S. Miller
Pablo Neira wrote:
> Samir Bellabes wrote:
>
>> for (i = 0; i < ports_c; i++) {
>> + /* don't allow bad port values */
>> + if (ports[i] < 1 || ports[i] > 65535) {
>> + printk(KERN_WARNING "ip_ct_ftp: ERROR port"
>> + "should be between 1 and 65535\n");
>> + fini();
>> + return -EINVAL;
>> + }
>
>
> Better something like this?
Damn, sorry, my mail client has mangled the email, I meant:
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports,int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
--
Pablo
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-07 23:48 ` Pablo Neira
@ 2005-09-09 22:59 ` Patrick McHardy
2005-09-12 8:44 ` Amin Azez
` (2 more replies)
2005-09-10 7:38 ` [PATCH] " Harald Welte
1 sibling, 3 replies; 14+ messages in thread
From: Patrick McHardy @ 2005-09-09 22:59 UTC (permalink / raw)
To: Pablo Neira
Cc: Harald Welte, netfilter-devel, Samir Bellabes, David S. Miller
[-- Attachment #1: Type: text/plain, Size: 756 bytes --]
Pablo Neira wrote:
> Pablo Neira wrote:
>
>> Samir Bellabes wrote:
>>
>>> for (i = 0; i < ports_c; i++) {
>>> + /* don't allow bad port values */
>>> + if (ports[i] < 1 || ports[i] > 65535) {
>>> + printk(KERN_WARNING "ip_ct_ftp: ERROR port"
>>> + "should be between 1 and 65535\n");
>>> + fini();
>>> + return -EINVAL;
>>> + }
>>
>>
>>
>> Better something like this?
>
> Damn, sorry, my mail client has mangled the email, I meant:
>
> -static int ports[MAX_PORTS];
> +static short ports[MAX_PORTS];
> static int ports_c;
> -module_param_array(ports,int, &ports_c, 0400);
> +module_param_array(ports, short, &ports_c, 0400);
I agree, I've applied this patch instead. Thanks.
[-- Attachment #2: x --]
[-- Type: text/plain, Size: 3432 bytes --]
[NETFILTER]: Use correct types for "ports" module parameter
With large port numbers the helper_names buffer can overflow.
Noticed by Samir Bellabes <sbellabes@mandriva.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
---
commit d53f0d343998b81945723c43046c4f2ee301e45b
tree 2e8a7c30c3fb32cae0eacb4231ac3554e18f6a47
parent 1d8674edb534a3c5cb549bfde5a39fa5598cb3bc
author Patrick McHardy <kaber@trash.net> Sat, 10 Sep 2005 00:58:11 +0200
committer Patrick McHardy <kaber@trash.net> Sat, 10 Sep 2005 00:58:11 +0200
net/ipv4/netfilter/ip_conntrack_ftp.c | 6 +++---
net/ipv4/netfilter/ip_conntrack_irc.c | 6 +++---
net/ipv4/netfilter/ip_conntrack_tftp.c | 6 +++---
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -29,9 +29,9 @@ static char *ftp_buffer;
static DEFINE_SPINLOCK(ip_ftp_lock);
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
static int loose;
module_param(loose, int, 0600);
@@ -450,7 +450,7 @@ out_update_nl:
}
static struct ip_conntrack_helper ftp[MAX_PORTS];
-static char ftp_names[MAX_PORTS][10];
+static char ftp_names[MAX_PORTS][sizeof("ftp-65535")];
/* Not __exit: called from init() */
static void fini(void)
diff --git a/net/ipv4/netfilter/ip_conntrack_irc.c b/net/ipv4/netfilter/ip_conntrack_irc.c
--- a/net/ipv4/netfilter/ip_conntrack_irc.c
+++ b/net/ipv4/netfilter/ip_conntrack_irc.c
@@ -34,7 +34,7 @@
#include <linux/moduleparam.h>
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
static int max_dcc_channels = 8;
static unsigned int dcc_timeout = 300;
@@ -52,7 +52,7 @@ EXPORT_SYMBOL_GPL(ip_nat_irc_hook);
MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
MODULE_DESCRIPTION("IRC (DCC) connection tracking helper");
MODULE_LICENSE("GPL");
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
MODULE_PARM_DESC(ports, "port numbers of IRC servers");
module_param(max_dcc_channels, int, 0400);
MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC session");
@@ -240,7 +240,7 @@ static int help(struct sk_buff **pskb,
}
static struct ip_conntrack_helper irc_helpers[MAX_PORTS];
-static char irc_names[MAX_PORTS][10];
+static char irc_names[MAX_PORTS][sizeof("irc-65535")];
static void fini(void);
diff --git a/net/ipv4/netfilter/ip_conntrack_tftp.c b/net/ipv4/netfilter/ip_conntrack_tftp.c
--- a/net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_tftp.c
@@ -26,9 +26,9 @@ MODULE_DESCRIPTION("tftp connection trac
MODULE_LICENSE("GPL");
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
MODULE_PARM_DESC(ports, "port numbers of tftp servers");
#if 0
@@ -100,7 +100,7 @@ static int tftp_help(struct sk_buff **ps
}
static struct ip_conntrack_helper tftp[MAX_PORTS];
-static char tftp_names[MAX_PORTS][10];
+static char tftp_names[MAX_PORTS][sizeof("tftp-65535")];
static void fini(void)
{
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH] Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-07 23:48 ` Pablo Neira
2005-09-09 22:59 ` Patrick McHardy
@ 2005-09-10 7:38 ` Harald Welte
1 sibling, 0 replies; 14+ messages in thread
From: Harald Welte @ 2005-09-10 7:38 UTC (permalink / raw)
To: Pablo Neira; +Cc: netfilter-devel, Samir Bellabes, David S. Miller
[-- Attachment #1.1: Type: text/plain, Size: 1225 bytes --]
Dave, please consider the appended patch.
On Thu, Sep 08, 2005 at 01:48:08AM +0200, Pablo Neira wrote:
> Pablo Neira wrote:
> >Samir Bellabes wrote:
> >> for (i = 0; i < ports_c; i++) {
> >>+ /* don't allow bad port values */
> >>+ if (ports[i] < 1 || ports[i] > 65535) {
> >>+ printk(KERN_WARNING "ip_ct_ftp: ERROR port"
> >>+ "should be between 1 and 65535\n");
> >>+ fini();
> >>+ return -EINVAL;
> >>+ }
> >Better something like this?
>
> Damn, sorry, my mail client has mangled the email, I meant:
>
> -static int ports[MAX_PORTS];
> +static short ports[MAX_PORTS];
> static int ports_c;
> -module_param_array(ports,int, &ports_c, 0400);
> +module_param_array(ports, short, &ports_c, 0400);
I agree, it looks cleaner than the explicit checks.
--
- Harald Welte <laforge@netfilter.org> http://netfilter.org/
============================================================================
"Fragmentation is like classful addressing -- an interesting early
architectural error that shows how much experimentation was going
on while IP was being designed." -- Paul Vixie
[-- Attachment #1.2: 54-ports-short.patch --]
[-- Type: text/plain, Size: 2706 bytes --]
[NETFILTER] Don't allow port numbers > 65535
This patch is the result of comments from Samir Bellabas and Pablo Neira.
Signed-off-by: Harald Welte <laforge@netfilter.org>
---
commit 707a1ddcc1aed83c3c5283925635d6a8982363f1
tree 62fdc65b0c508f43e0182939274ea6b6848d6f2d
parent 49f4a3e845089f9d90e7b481e1bb72ab217d69f5
author Harald Welte <laforge@netfilter.org> Sa, 10 Sep 2005 09:37:22 +0200
committer Harald Welte <laforge@netfilter.org> Sa, 10 Sep 2005 09:37:22 +0200
net/ipv4/netfilter/ip_conntrack_ftp.c | 4 ++--
net/ipv4/netfilter/ip_conntrack_irc.c | 4 ++--
net/ipv4/netfilter/ip_conntrack_tftp.c | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -29,9 +29,9 @@ static char *ftp_buffer;
static DEFINE_SPINLOCK(ip_ftp_lock);
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
static int loose;
module_param(loose, int, 0600);
diff --git a/net/ipv4/netfilter/ip_conntrack_irc.c b/net/ipv4/netfilter/ip_conntrack_irc.c
--- a/net/ipv4/netfilter/ip_conntrack_irc.c
+++ b/net/ipv4/netfilter/ip_conntrack_irc.c
@@ -34,7 +34,7 @@
#include <linux/moduleparam.h>
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
static int max_dcc_channels = 8;
static unsigned int dcc_timeout = 300;
@@ -52,7 +52,7 @@ EXPORT_SYMBOL_GPL(ip_nat_irc_hook);
MODULE_AUTHOR("Harald Welte <laforge@netfilter.org>");
MODULE_DESCRIPTION("IRC (DCC) connection tracking helper");
MODULE_LICENSE("GPL");
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
MODULE_PARM_DESC(ports, "port numbers of IRC servers");
module_param(max_dcc_channels, int, 0400);
MODULE_PARM_DESC(max_dcc_channels, "max number of expected DCC channels per IRC session");
diff --git a/net/ipv4/netfilter/ip_conntrack_tftp.c b/net/ipv4/netfilter/ip_conntrack_tftp.c
--- a/net/ipv4/netfilter/ip_conntrack_tftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_tftp.c
@@ -26,9 +26,9 @@ MODULE_DESCRIPTION("tftp connection trac
MODULE_LICENSE("GPL");
#define MAX_PORTS 8
-static int ports[MAX_PORTS];
+static short ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, int, &ports_c, 0400);
+module_param_array(ports, short, &ports_c, 0400);
MODULE_PARM_DESC(ports, "port numbers of tftp servers");
#if 0
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-09 22:59 ` Patrick McHardy
@ 2005-09-12 8:44 ` Amin Azez
2005-09-12 8:49 ` Patrick McHardy
2005-09-20 7:11 ` Yasuyuki KOZAKAI
[not found] ` <200509200711.j8K7Bw3x002184@toshiba.co.jp>
2 siblings, 1 reply; 14+ messages in thread
From: Amin Azez @ 2005-09-12 8:44 UTC (permalink / raw)
To: Patrick McHardy
Cc: Harald Welte, netfilter-devel, Samir Bellabes, David S. Miller
Patrick McHardy wrote:
...
> I agree, I've applied this patch instead. Thanks.
Dumb question follows:
What has this patch been applied to?...
pom-ng?
a git tree somewhere?
and svn kernel tree somewhere?
Thanks
Azez
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-12 8:44 ` Amin Azez
@ 2005-09-12 8:49 ` Patrick McHardy
0 siblings, 0 replies; 14+ messages in thread
From: Patrick McHardy @ 2005-09-12 8:49 UTC (permalink / raw)
To: Amin Azez; +Cc: Harald Welte, netfilter-devel, Samir Bellabes, David S. Miller
Amin Azez wrote:
> Patrick McHardy wrote:
>
>>I agree, I've applied this patch instead. Thanks.
>
> Dumb question follows:
>
> What has this patch been applied to?...
>
> pom-ng?
> a git tree somewhere?
> and svn kernel tree somewhere?
My personal git tree. I usually push it to Dave every week
or so if it contains patches.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-09 22:59 ` Patrick McHardy
2005-09-12 8:44 ` Amin Azez
@ 2005-09-20 7:11 ` Yasuyuki KOZAKAI
[not found] ` <200509200711.j8K7Bw3x002184@toshiba.co.jp>
2 siblings, 0 replies; 14+ messages in thread
From: Yasuyuki KOZAKAI @ 2005-09-20 7:11 UTC (permalink / raw)
To: kaber; +Cc: laforge, netfilter-devel, sbellabes, davem, pablo
From: Patrick McHardy <kaber@trash.net>
Date: Sat, 10 Sep 2005 00:59:49 +0200
> > -static int ports[MAX_PORTS];
> > +static short ports[MAX_PORTS];
> > static int ports_c;
> > -module_param_array(ports,int, &ports_c, 0400);
> > +module_param_array(ports, short, &ports_c, 0400);
>
> I agree, I've applied this patch instead. Thanks.
Why don't you use u_int16_t and ushort instead of short ?
-----------------------------------------------------------------
Yasuyuki Kozakai @ USAGI Project <yasuyuki.kozakai@toshiba.co.jp>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
[not found] ` <200509200711.j8K7Bw3x002184@toshiba.co.jp>
@ 2005-09-20 8:10 ` Pablo Neira
2005-09-20 9:35 ` Harald Welte
1 sibling, 0 replies; 14+ messages in thread
From: Pablo Neira @ 2005-09-20 8:10 UTC (permalink / raw)
To: Yasuyuki KOZAKAI; +Cc: laforge, netfilter-devel, sbellabes, kaber, davem
Yasuyuki KOZAKAI wrote:
> From: Patrick McHardy <kaber@trash.net>
> Date: Sat, 10 Sep 2005 00:59:49 +0200
>
>
>>>-static int ports[MAX_PORTS];
>>>+static short ports[MAX_PORTS];
>>>static int ports_c;
>>>-module_param_array(ports,int, &ports_c, 0400);
>>>+module_param_array(ports, short, &ports_c, 0400);
>>
>>I agree, I've applied this patch instead. Thanks.
>
>
> Why don't you use u_int16_t and ushort instead of short ?
Short reply, because the u_int16_t type isn't defined in moduleparam.h.
See the param_set_* stuff.
--
Pablo
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
[not found] ` <200509200711.j8K7Bw3x002184@toshiba.co.jp>
2005-09-20 8:10 ` Pablo Neira
@ 2005-09-20 9:35 ` Harald Welte
2005-09-20 12:48 ` Yasuyuki KOZAKAI
[not found] ` <200509201248.j8KCmNi9009046@toshiba.co.jp>
1 sibling, 2 replies; 14+ messages in thread
From: Harald Welte @ 2005-09-20 9:35 UTC (permalink / raw)
To: Yasuyuki KOZAKAI; +Cc: netfilter-devel, sbellabes, kaber, pablo, davem
[-- Attachment #1: Type: text/plain, Size: 948 bytes --]
On Tue, Sep 20, 2005 at 04:11:57PM +0900, Yasuyuki KOZAKAI wrote:
>
> From: Patrick McHardy <kaber@trash.net>
> Date: Sat, 10 Sep 2005 00:59:49 +0200
>
> > > -static int ports[MAX_PORTS];
> > > +static short ports[MAX_PORTS];
> > > static int ports_c;
> > > -module_param_array(ports,int, &ports_c, 0400);
> > > +module_param_array(ports, short, &ports_c, 0400);
> >
> > I agree, I've applied this patch instead. Thanks.
>
> Why don't you use u_int16_t and ushort instead of short ?
I tried this first, but the module_parm_* macros only deal with short.
--
- Harald Welte <laforge@netfilter.org> http://netfilter.org/
============================================================================
"Fragmentation is like classful addressing -- an interesting early
architectural error that shows how much experimentation was going
on while IP was being designed." -- Paul Vixie
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-20 9:35 ` Harald Welte
@ 2005-09-20 12:48 ` Yasuyuki KOZAKAI
[not found] ` <200509201248.j8KCmNi9009046@toshiba.co.jp>
1 sibling, 0 replies; 14+ messages in thread
From: Yasuyuki KOZAKAI @ 2005-09-20 12:48 UTC (permalink / raw)
To: laforge; +Cc: sbellabes, yasuyuki.kozakai, netfilter-devel, davem, kaber, pablo
[-- Attachment #1: Type: Text/Plain, Size: 1080 bytes --]
From: Harald Welte <laforge@netfilter.org>
Date: Tue, 20 Sep 2005 11:35:10 +0200
> On Tue, Sep 20, 2005 at 04:11:57PM +0900, Yasuyuki KOZAKAI wrote:
> >
> > From: Patrick McHardy <kaber@trash.net>
> > Date: Sat, 10 Sep 2005 00:59:49 +0200
> >
> > > > -static int ports[MAX_PORTS];
> > > > +static short ports[MAX_PORTS];
> > > > static int ports_c;
> > > > -module_param_array(ports,int, &ports_c, 0400);
> > > > +module_param_array(ports, short, &ports_c, 0400);
> > >
> > > I agree, I've applied this patch instead. Thanks.
> >
> > Why don't you use u_int16_t and ushort instead of short ?
>
> I tried this first, but the module_parm_* macros only deal with short.
Really ? At least, the current moduleparam.h in David's git tree includes
declarations for param_*_ushort(). And I succeeded to compile and use ftp
module with the attached patch.
Signed-off-by: Yasuyuki Kozakai <yasuyuki.kozakai@toshiba.co.jp>
Which kernel you tried ?
-----------------------------------------------------------------
Yasuyuki Kozakai @ USAGI Project <yasuyuki.kozakai@toshiba.co.jp>
[-- Attachment #2: ushort-ftp-ports.patch --]
[-- Type: Text/Plain, Size: 529 bytes --]
diff --git a/net/ipv4/netfilter/ip_conntrack_ftp.c b/net/ipv4/netfilter/ip_conntrack_ftp.c
--- a/net/ipv4/netfilter/ip_conntrack_ftp.c
+++ b/net/ipv4/netfilter/ip_conntrack_ftp.c
@@ -29,9 +29,9 @@ static char *ftp_buffer;
static DEFINE_SPINLOCK(ip_ftp_lock);
#define MAX_PORTS 8
-static short ports[MAX_PORTS];
+static u_int16_t ports[MAX_PORTS];
static int ports_c;
-module_param_array(ports, short, &ports_c, 0400);
+module_param_array(ports, ushort, &ports_c, 0400);
static int loose;
module_param(loose, int, 0600);
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
[not found] ` <200509201248.j8KCmNi9009046@toshiba.co.jp>
@ 2005-09-20 14:15 ` Harald Welte
2005-09-24 8:43 ` Yasuyuki KOZAKAI
0 siblings, 1 reply; 14+ messages in thread
From: Harald Welte @ 2005-09-20 14:15 UTC (permalink / raw)
To: Yasuyuki KOZAKAI; +Cc: netfilter-devel, sbellabes, kaber, pablo, davem
[-- Attachment #1: Type: text/plain, Size: 718 bytes --]
On Tue, Sep 20, 2005 at 09:48:21PM +0900, Yasuyuki KOZAKAI wrote:
> Really ? At least, the current moduleparam.h in David's git tree includes
> declarations for param_*_ushort(). And I succeeded to compile and use ftp
> module with the attached patch.
ok "ushort" will work, but not "u_int16_t". I'll prepare a patch for
all helpers.
--
- Harald Welte <laforge@netfilter.org> http://netfilter.org/
============================================================================
"Fragmentation is like classful addressing -- an interesting early
architectural error that shows how much experimentation was going
on while IP was being designed." -- Paul Vixie
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: buffer overflow in ip_ct_{ftp,tftp,irc}
2005-09-20 14:15 ` Harald Welte
@ 2005-09-24 8:43 ` Yasuyuki KOZAKAI
0 siblings, 0 replies; 14+ messages in thread
From: Yasuyuki KOZAKAI @ 2005-09-24 8:43 UTC (permalink / raw)
To: laforge; +Cc: sbellabes, yasuyuki.kozakai, netfilter-devel, davem, kaber, pablo
From: Harald Welte <laforge@netfilter.org>
Date: Tue, 20 Sep 2005 16:15:20 +0200
> On Tue, Sep 20, 2005 at 09:48:21PM +0900, Yasuyuki KOZAKAI wrote:
>
> > Really ? At least, the current moduleparam.h in David's git tree includes
> > declarations for param_*_ushort(). And I succeeded to compile and use ftp
> > module with the attached patch.
>
> ok "ushort" will work, but not "u_int16_t". I'll prepare a patch for
> all helpers.
Sorry for confusing. "using u_int16_t" means just "u_int16_t ports[MAX_PORTS]".
Anyway, thanks for consideration.
-----------------------------------------------------------------
Yasuyuki Kozakai @ USAGI Project <yasuyuki.kozakai@toshiba.co.jp>
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2005-09-24 8:43 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-07 23:11 buffer overflow in ip_ct_{ftp,tftp,irc} Samir Bellabes
2005-09-07 23:15 ` Samir Bellabes
2005-09-07 23:43 ` Pablo Neira
2005-09-07 23:48 ` Pablo Neira
2005-09-09 22:59 ` Patrick McHardy
2005-09-12 8:44 ` Amin Azez
2005-09-12 8:49 ` Patrick McHardy
2005-09-20 7:11 ` Yasuyuki KOZAKAI
[not found] ` <200509200711.j8K7Bw3x002184@toshiba.co.jp>
2005-09-20 8:10 ` Pablo Neira
2005-09-20 9:35 ` Harald Welte
2005-09-20 12:48 ` Yasuyuki KOZAKAI
[not found] ` <200509201248.j8KCmNi9009046@toshiba.co.jp>
2005-09-20 14:15 ` Harald Welte
2005-09-24 8:43 ` Yasuyuki KOZAKAI
2005-09-10 7:38 ` [PATCH] " Harald Welte
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.