Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Nov 2011 20:24:51 +0000
From:      Alexander Best <arundel@freebsd.org>
To:        Michael Tuexen <tuexen@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r228031 - head/sys/netinet
Message-ID:  <20111127202451.GA5466@freebsd.org>
In-Reply-To: <201111271751.pARHpDdr049714@svn.freebsd.org>
References:  <201111271751.pARHpDdr049714@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--UugvWAfsgieZRqgk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun Nov 27 11, Michael Tuexen wrote:
> Author: tuexen
> Date: Sun Nov 27 17:51:13 2011
> New Revision: 228031
> URL: http://svn.freebsd.org/changeset/base/228031
> 
> Log:
>   Fix a warning reported by arundel@.
>   Fix a bug where the parameter length of a supported address types
>   parameter is set to a wrong value if the kernel is built with
>   with either INET or INET6, but not both.
>   
>   MFC after: 3 days.
> 
> Modified:
>   head/sys/netinet/sctp_header.h
>   head/sys/netinet/sctp_output.c
> 
> Modified: head/sys/netinet/sctp_header.h
> ==============================================================================
> --- head/sys/netinet/sctp_header.h	Sun Nov 27 17:05:26 2011	(r228030)
> +++ head/sys/netinet/sctp_header.h	Sun Nov 27 17:51:13 2011	(r228031)
> @@ -81,8 +81,7 @@ struct sctp_host_name_param {
>  /* supported address type */
>  struct sctp_supported_addr_param {
>  	struct sctp_paramhdr ph;/* type=SCTP_SUPPORTED_ADDRTYPE */
> -	uint16_t addr_type[SCTP_ARRAY_MIN_LEN];	/* array of supported address

since SCTP_ARRAY_MIN_LEN is only used in one other place, i think we can remove
it entirely (see the attached patch).

cheers.
alex

> -						 * types */
> +	uint16_t addr_type[2];	/* array of supported address types */
>  }                         SCTP_PACKED;
>  
>  /* ECN parameter */
> 
> Modified: head/sys/netinet/sctp_output.c
> ==============================================================================
> --- head/sys/netinet/sctp_output.c	Sun Nov 27 17:05:26 2011	(r228030)
> +++ head/sys/netinet/sctp_output.c	Sun Nov 27 17:51:13 2011	(r228031)
> @@ -4680,24 +4680,24 @@ sctp_send_initiate(struct sctp_inpcb *in
>  #ifdef INET6
>  #ifdef INET
>  	/* we support 2 types: IPv4/IPv6 */
> -	sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint16_t));
> +	sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + 2 * sizeof(uint16_t));
>  	sup_addr->addr_type[0] = htons(SCTP_IPV4_ADDRESS);
>  	sup_addr->addr_type[1] = htons(SCTP_IPV6_ADDRESS);
>  #else
>  	/* we support 1 type: IPv6 */
> -	sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint8_t));
> +	sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + sizeof(uint16_t));
>  	sup_addr->addr_type[0] = htons(SCTP_IPV6_ADDRESS);
>  	sup_addr->addr_type[1] = htons(0);	/* this is the padding */
>  #endif
>  #else
>  	/* we support 1 type: IPv4 */
> -	sup_addr->ph.param_length = htons(sizeof(*sup_addr) + sizeof(uint8_t));
> +	sup_addr->ph.param_length = htons(sizeof(struct sctp_paramhdr) + sizeof(uint16_t));
>  	sup_addr->addr_type[0] = htons(SCTP_IPV4_ADDRESS);
>  	sup_addr->addr_type[1] = htons(0);	/* this is the padding */
>  #endif
> -	SCTP_BUF_LEN(m) += sizeof(*sup_addr) + sizeof(uint16_t);
> +	SCTP_BUF_LEN(m) += sizeof(struct sctp_supported_addr_param);
>  	/* adaptation layer indication parameter */
> -	ali = (struct sctp_adaptation_layer_indication *)((caddr_t)sup_addr + sizeof(*sup_addr) + sizeof(uint16_t));
> +	ali = (struct sctp_adaptation_layer_indication *)((caddr_t)sup_addr + sizeof(struct sctp_supported_addr_param));
>  	ali->ph.param_type = htons(SCTP_ULP_ADAPTATION);
>  	ali->ph.param_length = htons(sizeof(*ali));
>  	ali->indication = ntohl(inp->sctp_ep.adaptation_layer_indicator);

--UugvWAfsgieZRqgk
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="sctp_header.h.diff"

Index: sys/netinet/sctp_header.h
===================================================================
--- sys/netinet/sctp_header.h	(revision 228040)
+++ sys/netinet/sctp_header.h	(working copy)
@@ -66,11 +66,10 @@
 	uint32_t time;		/* time in ms to extend cookie */
 }                          SCTP_PACKED;
 
-#define SCTP_ARRAY_MIN_LEN 1
 /* Host Name Address */
 struct sctp_host_name_param {
 	struct sctp_paramhdr ph;/* type=SCTP_HOSTNAME_ADDRESS */
-	char name[SCTP_ARRAY_MIN_LEN];	/* host name */
+	char name[1];	/* host name */
 }                    SCTP_PACKED;
 
 /*

--UugvWAfsgieZRqgk--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111127202451.GA5466>