|
|
Message-ID: <02844173-9671-d0e9-a291-764b27899f44@dd-wrt.com>
Date: Fri, 1 Apr 2016 12:29:35 +0200
From: Sebastian Gottschall <s.gottschall@...wrt.com>
To: musl@...ts.openwall.com
Subject: Re: recvmsg/sendmsg broken on mips64
Am 01.04.2016 um 11:49 schrieb Szabolcs Nagy:
> * Sebastian Gottschall <s.gottschall@...wrt.com> [2016-04-01 11:16:20 +0200]:
>> I discovered that the whole recvmsg/sendmsg code is broken in mips64
>> but i found also the solution
>> i throwed out all the _pad1, _pad2 crap in socket.h and the corrosponding
>> code in recvmsg.c etc.
>> and used size_t instead. this works at the end. i see no reason for this
>> padding, since using the correct datatype will handle it in the same way.
>> this solution may also work for other 64 bit targets. so proposal is fixing
>> the datatype instead of using int with padding in case of 64 bit
>>
> the padding is needed, i think __BIG_ENDIAN
> or __LITTLE_ENDIAN might not be defined properly.
i checked this already. it was defined properly. the only solution was
using the correct datatypes as defined in the kernel and i also checked
uclibc. it uses also just size_t and nothing else.
the padding results in the same datatype size, just clears the upper and
lower word. but this doesnt seem to be neccessary
> your fix is non-conforming and breaks both abi and api,
> the definition must match
socklen_t would result in the same 64bit datatype instead of int + pad
(which is 64 bit too). so its conforming.
i mached by header variant by reading the kernel headers which uses
size_t instead of socketlen_t
so i assume socketlen_t maches size_t
>
> http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
>
>> this here is my working struct in mips64 (big endian)
>>
>> struct msghdr {
>> void *msg_name;
>> socklen_t msg_namelen;
>> struct iovec *msg_iov;
>> size_t msg_iovlen;
>> void *msg_control;
>> size_t msg_controllen;
>> int msg_flags;
>> };
>>
>> struct cmsghdr {
>> size_t cmsg_len;
>> int cmsg_level;
>> int cmsg_type;
>> };
>>
>>
>> Sebastian
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.