|
Message-ID: <20160401094919.GT9862@port70.net> Date: Fri, 1 Apr 2016 11:49:20 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Subject: Re: recvmsg/sendmsg broken on mips64 * 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. your fix is non-conforming and breaks both abi and api, the definition must match 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.