[PATCH] sctp: fix the format of invalid mandatory parameter format in ASCONF-ACK

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



RFC 4960 defined the format of invalid mandatory parameter:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Cause Code=7              |      Cause Length=4           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

But invalid mandatory parameter sent in ASCONF-ACK chunk include the
invalid paramter complete with TLV.

Signed-off-by: Wei Yongjun <yjwei@xxxxxxxxxxxxxx>
---
 net/sctp/sm_make_chunk.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 6851ee9..46de41a 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -2822,7 +2822,7 @@ static void sctp_add_asconf_response(struct sctp_chunk *chunk, __be32 crr_id,
 	} else {
 		response_type = SCTP_PARAM_ERR_CAUSE;
 		err_param_len = sizeof(err_param);
-		if (asconf_param)
+		if (asconf_param && err_code != SCTP_ERROR_INV_PARAM)
 			asconf_param_len =
 				 ntohs(asconf_param->param_hdr.length);
 	}
@@ -2844,7 +2844,7 @@ static void sctp_add_asconf_response(struct sctp_chunk *chunk, __be32 crr_id,
 	sctp_addto_chunk(chunk, err_param_len, &err_param);
 
 	/* Add the failed TLV copied from ASCONF chunk. */
-	if (asconf_param)
+	if (asconf_param && err_code != SCTP_ERROR_INV_PARAM)
 		sctp_addto_chunk(chunk, asconf_param_len, asconf_param);
 }
 
-- 
1.5.3.8




--
To unsubscribe from this list: send the line "unsubscribe linux-sctp" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Networking Development]     [Linux OMAP]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux