workaround another sendmsg kernel bug on 64-bit machines
the kernel wrongly expects the cmsg length field to be size_t instead of socklen_t. in order to work around the issue, we have to impose a length limit and copy to a local buffer. the length limit should be more than sufficient for any real-world use; these headers are only used for passing file descriptors and permissions between processes over unix sockets.
This commit is contained in:
parent
90e123f4a8
commit
96107564e2
6 changed files with 42 additions and 7 deletions
|
|
@ -17,13 +17,6 @@ extern "C" {
|
|||
|
||||
#include <bits/socket.h>
|
||||
|
||||
struct cmsghdr
|
||||
{
|
||||
socklen_t cmsg_len;
|
||||
int cmsg_level;
|
||||
int cmsg_type;
|
||||
};
|
||||
|
||||
struct ucred
|
||||
{
|
||||
pid_t pid;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue