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>