All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]: Fix invalid return values from sctp_new
@ 2004-09-20  8:28 Patrick McHardy
  2004-09-20  8:39 ` Kiran Kumar Immidi
  0 siblings, 1 reply; 5+ messages in thread
From: Patrick McHardy @ 2004-09-20  8:28 UTC (permalink / raw)
  To: Kiran Kumar; +Cc: Netfilter Development Mailinglist

[-- Attachment #1: Type: text/plain, Size: 468 bytes --]

Hi Kiran,

there are multiple places in sctp_new where it returns -1, but
it looks like it really wants to return "invalid". The call to
protocol->new in init_conntrack looks like this:

        if (!protocol->new(conntrack, skb)) {
                kmem_cache_free(ip_conntrack_cachep, conntrack);
                return NULL;
        }

so it has to return 0 to say "invalid". Please check if the
attached patch which fixes these places is correct.

Regards
Patrick


[-- Attachment #2: x --]
[-- Type: text/plain, Size: 1646 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/09/20 10:06:40+02:00 kaber@coreworks.de 
#   [NETFILTER]: Fix invalid return values from sctp_new
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
# 
# net/ipv4/netfilter/ip_conntrack_proto_sctp.c
#   2004/09/20 10:06:16+02:00 kaber@coreworks.de +5 -5
#   [NETFILTER]: Fix invalid return values from sctp_new
#   
#   Signed-off-by: Patrick McHardy <kaber@trash.net>
# 
diff -Nru a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c
--- a/net/ipv4/netfilter/ip_conntrack_proto_sctp.c	2004-09-20 10:26:10 +02:00
+++ b/net/ipv4/netfilter/ip_conntrack_proto_sctp.c	2004-09-20 10:26:10 +02:00
@@ -430,16 +430,16 @@
 	DEBUGP("\n");
 
 	if (skb_copy_bits(skb, skb->nh.iph->ihl * 4, &sctph, sizeof(sctph)) != 0)
-		return -1;
+		return 0;
 
 	if (do_basic_checks(conntrack, skb, map) != 0)
-		return -1;
+		return 0;
 
 	/* If an OOTB packet has any of these chunks discard (Sec 8.4) */
 	if ((test_bit (SCTP_CID_ABORT, (void *)map))
 		|| (test_bit (SCTP_CID_SHUTDOWN_COMPLETE, (void *)map))
 		|| (test_bit (SCTP_CID_COOKIE_ACK, (void *)map))) {
-		return -1;
+		return 0;
 	}
 
 	newconntrack = SCTP_CONNTRACK_MAX;
@@ -461,7 +461,7 @@
 
 				if (skb_copy_bits(skb, offset + sizeof (sctp_chunkhdr_t), 
 					&inithdr, sizeof(inithdr)) != 0) {
-						return -1;
+						return 0;
 				}
 
 				DEBUGP("Setting vtag %x for new conn\n", 
@@ -471,7 +471,7 @@
 								inithdr.init_tag;
 			} else {
 				/* Sec 8.5.1 (A) */
-				return -1;
+				return 0;
 			}
 		}
 		/* If it is a shutdown ack OOTB packet, we expect a return

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2004-09-20  9:40 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-20  8:28 [PATCH]: Fix invalid return values from sctp_new Patrick McHardy
2004-09-20  8:39 ` Kiran Kumar Immidi
2004-09-20  9:02   ` Patrick McHardy
2004-09-20  9:26     ` Kiran Kumar Immidi
2004-09-20  9:40       ` Patrick McHardy

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.