sys/fdpass.c: Fix expected size of descriptor message.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 25 Dec 2018 15:01:18 +0000 (15:01 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 25 Dec 2018 15:01:18 +0000 (15:01 +0000)
This typo breaks 64-bit targets, and I'd never noticed because of
inadequate testing.

sys/fdpass.c

index e860ec3..1db9210 100644 (file)
@@ -139,7 +139,7 @@ ssize_t fdpass_recv(int sock, int *fd, void *p, size_t sz)
   for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) {
     if (cmsg->cmsg_level == SOL_SOCKET &&
        cmsg->cmsg_type == SCM_RIGHTS &&
-       cmsg->cmsg_len >= CMSG_LEN(sizeof(fd))) {
+       cmsg->cmsg_len >= CMSG_LEN(sizeof(*fd))) {
       memcpy(&fdtmp, CMSG_DATA(cmsg), sizeof(fdtmp));
       if (*fd == -1)
        *fd = fdtmp;