|
@@ -160,6 +160,7 @@ int send_fd(int unix_socket, void* data, int data_len, int fd)
|
|
struct iovec iov[1];
|
|
struct iovec iov[1];
|
|
int ret;
|
|
int ret;
|
|
#ifdef HAVE_MSGHDR_MSG_CONTROL
|
|
#ifdef HAVE_MSGHDR_MSG_CONTROL
|
|
|
|
+ int* pi;
|
|
struct cmsghdr* cmsg;
|
|
struct cmsghdr* cmsg;
|
|
/* make sure msg_control will point to properly aligned data */
|
|
/* make sure msg_control will point to properly aligned data */
|
|
union {
|
|
union {
|
|
@@ -176,7 +177,8 @@ int send_fd(int unix_socket, void* data, int data_len, int fd)
|
|
cmsg->cmsg_level = SOL_SOCKET;
|
|
cmsg->cmsg_level = SOL_SOCKET;
|
|
cmsg->cmsg_type = SCM_RIGHTS;
|
|
cmsg->cmsg_type = SCM_RIGHTS;
|
|
cmsg->cmsg_len = CMSG_LEN(sizeof(fd));
|
|
cmsg->cmsg_len = CMSG_LEN(sizeof(fd));
|
|
- *(int*)CMSG_DATA(cmsg)=fd;
|
|
|
|
|
|
+ pi=(int*)CMSG_DATA(cmsg);
|
|
|
|
+ *pi=fd;
|
|
msg.msg_flags=0;
|
|
msg.msg_flags=0;
|
|
#else
|
|
#else
|
|
msg.msg_accrights=(caddr_t) &fd;
|
|
msg.msg_accrights=(caddr_t) &fd;
|
|
@@ -225,6 +227,7 @@ int receive_fd(int unix_socket, void* data, int data_len, int* fd, int flags)
|
|
int f;
|
|
int f;
|
|
#endif /*NO_MSG_WAITALL */
|
|
#endif /*NO_MSG_WAITALL */
|
|
#ifdef HAVE_MSGHDR_MSG_CONTROL
|
|
#ifdef HAVE_MSGHDR_MSG_CONTROL
|
|
|
|
+ int* pi;
|
|
struct cmsghdr* cmsg;
|
|
struct cmsghdr* cmsg;
|
|
union{
|
|
union{
|
|
struct cmsghdr cm;
|
|
struct cmsghdr cm;
|
|
@@ -308,7 +311,8 @@ poll_again:
|
|
ret=-1;
|
|
ret=-1;
|
|
goto error;
|
|
goto error;
|
|
}
|
|
}
|
|
- *fd=*((int*) CMSG_DATA(cmsg));
|
|
|
|
|
|
+ pi=(int*) CMSG_DATA(cmsg);
|
|
|
|
+ *fd=*pi;
|
|
}else{
|
|
}else{
|
|
/*
|
|
/*
|
|
LOG(L_ERR, "ERROR: receive_fd: no descriptor passed, cmsg=%p,"
|
|
LOG(L_ERR, "ERROR: receive_fd: no descriptor passed, cmsg=%p,"
|