On 08/24/2015 06:07 AM, Xin Long wrote:
> currently, we sctp_walk_params(), if we encounter the address parameter, we 
> will
> skip them, we do not care about how many addr params are there.
> 
> but the params of ASCONF chunk should consist of one *Address Parameter* and 
> one
> or more *ASCONF Parameters*.
> 
> so we will process multiple address parameters as unrecognized parameter and
> send error cause to peer.
> 
> Signed-off-by: Xin Long <lucien....@gmail.com>
> ---
>  net/sctp/sm_make_chunk.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
> index 06320c8..0ee5ca7 100644
> --- a/net/sctp/sm_make_chunk.c
> +++ b/net/sctp/sm_make_chunk.c
> @@ -3217,10 +3217,18 @@ struct sctp_chunk *sctp_process_asconf(struct 
> sctp_association *asoc,
>  
>       /* Process the TLVs contained within the ASCONF chunk. */
>       sctp_walk_params(param, addip, addip_hdr.params) {
> -             /* Skip preceeding address parameters. */
> +             /* Skip preceeding address parameters.
> +              * process multi-addrparam as unrecognized parameters
> +              */
>               if (param.p->type == SCTP_PARAM_IPV4_ADDRESS ||
> -                 param.p->type == SCTP_PARAM_IPV6_ADDRESS)
> +                 param.p->type == SCTP_PARAM_IPV6_ADDRESS) {
> +                     if(param.addr != addr_param) {
> +                             all_param_pass = false;
> +                             sctp_add_asconf_response(asconf_ack, 0,
> +                                     SCTP_ERROR_UNKNOWN_PARAM, param.v);
> +                     }
>                       continue;
> +             }
>  

I think it would be much better to catch this in the validation stage.
If an implementation inserts multiple address parameters, we don't really know
which one we should be using.

-vlad

>               err_code = sctp_process_asconf_param(asoc, asconf,
>                                                    param.addip);
> 

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

Reply via email to