From 04c66392ced6bd3604c7d9f47319d209e4d4a63a Mon Sep 17 00:00:00 2001 From: Wei Yongjun Date: Mon, 15 Oct 2007 11:51:03 +0900 Subject: [PATCH] --- yaml --- r: 73585 b: refs/heads/master c: f3830ccc2ea503ab37d605f6c313d61423ddd94e h: refs/heads/master i: 73583: 06415b9744f91bd964c70081f25dd2fa259ca843 v: v3 --- [refs] | 2 +- trunk/net/sctp/sm_make_chunk.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index b4c295403e66..26f5ef18bb60 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 64b0812b6d26bb30cac74c65f51f4ebfb4ec5429 +refs/heads/master: f3830ccc2ea503ab37d605f6c313d61423ddd94e diff --git a/trunk/net/sctp/sm_make_chunk.c b/trunk/net/sctp/sm_make_chunk.c index c377e4e8f653..5de4729fe993 100644 --- a/trunk/net/sctp/sm_make_chunk.c +++ b/trunk/net/sctp/sm_make_chunk.c @@ -2848,10 +2848,11 @@ struct sctp_chunk *sctp_process_asconf(struct sctp_association *asoc, __be16 err_code; int length = 0; - int chunk_len = asconf->skb->len; + int chunk_len; __u32 serial; int all_param_pass = 1; + chunk_len = ntohs(asconf->chunk_hdr->length) - sizeof(sctp_chunkhdr_t); hdr = (sctp_addiphdr_t *)asconf->skb->data; serial = ntohl(hdr->serial); @@ -2990,7 +2991,7 @@ static __be16 sctp_get_asconf_response(struct sctp_chunk *asconf_ack, sctp_addip_param_t *asconf_ack_param; sctp_errhdr_t *err_param; int length; - int asconf_ack_len = asconf_ack->skb->len; + int asconf_ack_len; __be16 err_code; if (no_err) @@ -2998,6 +2999,9 @@ static __be16 sctp_get_asconf_response(struct sctp_chunk *asconf_ack, else err_code = SCTP_ERROR_REQ_REFUSED; + asconf_ack_len = ntohs(asconf_ack->chunk_hdr->length) - + sizeof(sctp_chunkhdr_t); + /* Skip the addiphdr from the asconf_ack chunk and store a pointer to * the first asconf_ack parameter. */