add check for msg.controllen, apparently Mac OS X sets it to 0,

but CMSG_FIRSTHDR is not NULL!

git-svn: trunk@4761
remotes/push_mirror/0.95
Török Edvin 17 years ago
parent 357f2f4e04
commit 4cc952e322
  1. 5
      ChangeLog
  2. 22
      clamd/others.c

@ -1,3 +1,8 @@
Thu Feb 12 20:16:25 EET 2009 (edwin)
------------------------------------
* clamd/others.c: add check for msg.controllen, apparently Mac OS X
sets it to 0, but CMSG_FIRSTHDR is not NULL!
Thu Feb 12 20:09:17 EET 2009 (edwin)
------------------------------------
* unit_tests/checks_common.h: add missing file

@ -282,17 +282,19 @@ static int read_fd_data(struct fd_buf *buf)
logg("!control message truncated");
return -1;
}
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL;
cmsg = CMSG_NXTHDR(&msg, cmsg)) {
if (cmsg->cmsg_len == CMSG_LEN(sizeof(int)) &&
cmsg->cmsg_level == SOL_SOCKET &&
cmsg->cmsg_type == SCM_RIGHTS) {
if (buf->recvfd != -1) {
logg("^Unclaimed file descriptor received. closing\n");
close(buf->recvfd);
if (msg.msg_controllen) {
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL;
cmsg = CMSG_NXTHDR(&msg, cmsg)) {
if (cmsg->cmsg_len == CMSG_LEN(sizeof(int)) &&
cmsg->cmsg_level == SOL_SOCKET &&
cmsg->cmsg_type == SCM_RIGHTS) {
if (buf->recvfd != -1) {
logg("^Unclaimed file descriptor received. closing\n");
close(buf->recvfd);
}
buf->recvfd = *(int *)CMSG_DATA(cmsg);
logg("*RECVMSG: got FD %d\n", buf->recvfd);
}
buf->recvfd = *(int *)CMSG_DATA(cmsg);
logg("*RECVMSG: got FD %d\n", buf->recvfd);
}
}
}

Loading…
Cancel
Save