git-svn: trunk@4761
Török Edvin authored on 2009/02/13 02:47:36... | ... |
@@ -1,3 +1,8 @@ |
1 |
+Thu Feb 12 20:16:25 EET 2009 (edwin) |
|
2 |
+------------------------------------ |
|
3 |
+ * clamd/others.c: add check for msg.controllen, apparently Mac OS X |
|
4 |
+ sets it to 0, but CMSG_FIRSTHDR is not NULL! |
|
5 |
+ |
|
1 | 6 |
Thu Feb 12 20:09:17 EET 2009 (edwin) |
2 | 7 |
------------------------------------ |
3 | 8 |
* unit_tests/checks_common.h: add missing file |
... | ... |
@@ -282,17 +282,19 @@ static int read_fd_data(struct fd_buf *buf) |
282 | 282 |
logg("!control message truncated"); |
283 | 283 |
return -1; |
284 | 284 |
} |
285 |
- for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; |
|
286 |
- cmsg = CMSG_NXTHDR(&msg, cmsg)) { |
|
287 |
- if (cmsg->cmsg_len == CMSG_LEN(sizeof(int)) && |
|
288 |
- cmsg->cmsg_level == SOL_SOCKET && |
|
289 |
- cmsg->cmsg_type == SCM_RIGHTS) { |
|
290 |
- if (buf->recvfd != -1) { |
|
291 |
- logg("^Unclaimed file descriptor received. closing\n"); |
|
292 |
- close(buf->recvfd); |
|
285 |
+ if (msg.msg_controllen) { |
|
286 |
+ for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL; |
|
287 |
+ cmsg = CMSG_NXTHDR(&msg, cmsg)) { |
|
288 |
+ if (cmsg->cmsg_len == CMSG_LEN(sizeof(int)) && |
|
289 |
+ cmsg->cmsg_level == SOL_SOCKET && |
|
290 |
+ cmsg->cmsg_type == SCM_RIGHTS) { |
|
291 |
+ if (buf->recvfd != -1) { |
|
292 |
+ logg("^Unclaimed file descriptor received. closing\n"); |
|
293 |
+ close(buf->recvfd); |
|
294 |
+ } |
|
295 |
+ buf->recvfd = *(int *)CMSG_DATA(cmsg); |
|
296 |
+ logg("*RECVMSG: got FD %d\n", buf->recvfd); |
|
293 | 297 |
} |
294 |
- buf->recvfd = *(int *)CMSG_DATA(cmsg); |
|
295 |
- logg("*RECVMSG: got FD %d\n", buf->recvfd); |
|
296 | 298 |
} |
297 | 299 |
} |
298 | 300 |
} |