www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/08/12/13:12:47

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00
X-Spam-Check-By: sourceware.org
Message-ID: <4A82F7FB.3000609@sipxx.com>
Date: Wed, 12 Aug 2009 13:12:27 -0400
From: cygwin <karl AT sipxx DOT com>
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: [1.7] IPv6 accept() fails if address_len is < sizeof(sockaddr_in6) [was Re: PATCH /usr/include/X11/Xtrans/Xtranssock.c [WAS: Re: xhost package not compiled for IPv6]]
References: <4A78A511 DOT 8020109 AT sipxx DOT com> <4A803D7C DOT 6070800 AT dronecode DOT org DOT uk> <4A825EE5 DOT 5020709 AT sipxx DOT com> <4A82BB83 DOT 1090908 AT dronecode DOT org DOT uk> <4A82C835 DOT 9030504 AT dronecode DOT org DOT uk>
In-Reply-To: <4A82C835.9030504@dronecode.org.uk>
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

The opengroup man page indeed specifies the address to be truncated if 
the storage size is too small. I wonder, however, what kind of sense 
that makes.
Of what use would the truncated address be? This might also require 
applications to verify the integrity of the data returned even if 
accept() returns successfully.
However, Linux also has accept() returning successfully in this case.
For compatibility, the Cygwin implementation should probably be faithful 
to the *NIX behavior and not the Windows practice, since the primary 
idea of Cygwin is to be a portability layer for *NIX apps.




Jon TURNEY wrote:
> On 12/08/2009 13:54, Jon TURNEY wrote:
>> Hmmm... but if it's really the size of the sockname argument which is
>> causing the accept() to fail, this would be a bug in cygwin's accept()
>> implementation, as it's supposed to truncate the data written to the
>> sockname, rather than fail if it won't fit [1]. If that actually is the
>> case, since we don't actually use the peer address here, the code as
>> stands is correct (if a little odd).
>>
>> I suppose I need to write a small test case to look at this...
>>
>> [1] http://www.opengroup.org/onlinepubs/009695399/functions/accept.html
>
> A couple of small programs which hopefully demonstrate this problem.
>
> (As is, the connection fails, but uncommenting the alternate 
> definition of cliaddr in listener.c allows it to work)
>
> I'd hazard a guess that perhaps this is because the underlying winsock 
> accept() doesn't have this truncate behaviour and considers a 
> too-small address_len an error.
> ------------------------------------------------------------------------
>
> --
> Problem reports:       http://cygwin.com/problems.html
> FAQ:                   http://cygwin.com/faq/
> Documentation:         http://cygwin.com/docs.html
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019