[PATCH] PR ada/89583, GNAT.Sockets.Bind_Socket fails with IPv4 address

Simon Wright simon@pushface.org
Tue Mar 19 16:26:00 GMT 2019


Ping?

> On 5 Mar 2019, at 20:43, Simon Wright <simon@pushface.org> wrote:
> 
> Arno,
> 
> OK.
> 
> --S
> 
>> On 5 Mar 2019, at 20:38, Arnaud Charlet <charlet@adacore.com> wrote:
>> 
>> Simon,
>> 
>> Thanks for the patch.
>> We already have a fix pending for that in our tree that we will merge.
>> 
>> Arno
>> 
>>> On 4 Mar 2019, at 20:48, Simon Wright <simon@pushface.org> wrote:
>>> 
>>> With GCC9, GNAT.Sockets includes support for IPv6. Sockaddr is an Unchecked_Union, which now includes IPv6 fields, bringing the total possible size to 28 bytes. The code in Bind_Socket currently calculates the length of the struct sockaddr to be passed to bind(2) as this size, which (at any rate on Darwin x86_64) results in failure (EINVAL).
>>> 
>>> This patch provides the required length explicitly from the socket's family.
>>> 
>>> Tested by rebuilding the compiler with --disable-bootstrap and re-running the reproducer.
>>> 
>>> gcc/ada/Changelog:
>>> 
>>>  2019-03-04 Simon Wright <simon@pushface.org>
>>> 
>>>  PR ada/89583
>>>  * libgnat/g-socket.adb (Bind_Socket): Calculate Len (the significant length of
>>>    the Sockaddr) using the Family of the Address parameter.
>>> 
>>> 
>>> <pr89583.diff>
>> 
> 



More information about the Gcc-patches mailing list