|
@@ -235,12 +235,15 @@ static int do_basic_checks(struct ip_conntrack *conntrack,
|
|
|
flag = 1;
|
|
|
}
|
|
|
|
|
|
- /* Cookie Ack/Echo chunks not the first OR
|
|
|
- Init / Init Ack / Shutdown compl chunks not the only chunks */
|
|
|
- if ((sch->type == SCTP_CID_COOKIE_ACK
|
|
|
+ /*
|
|
|
+ * Cookie Ack/Echo chunks not the first OR
|
|
|
+ * Init / Init Ack / Shutdown compl chunks not the only chunks
|
|
|
+ * OR zero-length.
|
|
|
+ */
|
|
|
+ if (((sch->type == SCTP_CID_COOKIE_ACK
|
|
|
|| sch->type == SCTP_CID_COOKIE_ECHO
|
|
|
|| flag)
|
|
|
- && count !=0 ) {
|
|
|
+ && count !=0) || !sch->length) {
|
|
|
DEBUGP("Basic checks failed\n");
|
|
|
return 1;
|
|
|
}
|