|
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.