]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fd_read(): make sure it's SCM_RIGHTS that was transferred so that login
authorTimo Sirainen <tss@iki.fi>
Fri, 14 Feb 2003 10:51:53 +0000 (12:51 +0200)
committerTimo Sirainen <tss@iki.fi>
Fri, 14 Feb 2003 10:51:53 +0000 (12:51 +0200)
process couldn't fool us to use some of our existing fds.

--HG--
branch : HEAD

src/lib/fdpass.c

index a6b0f9f73dc45eee6adb8cc00cf44e9356e0fbd5..4cafbe31636cbd5cb704a99373d677aebd58c132 100644 (file)
@@ -109,7 +109,8 @@ ssize_t fd_read(int handle, void *data, size_t size, int *fd)
        /* at least one byte transferred - we should have the fd now */
        cmsg = CMSG_FIRSTHDR(&msg);
        if (msg.msg_controllen < CMSG_SPACE(sizeof(int)) ||
-           cmsg == NULL || cmsg->cmsg_len < CMSG_LEN(sizeof(int)))
+           cmsg == NULL || cmsg->cmsg_len < CMSG_LEN(sizeof(int)) ||
+           cmsg->cmsg_type != SCM_RIGHTS)
                *fd = -1;
        else
                *fd = *((int *) CMSG_DATA(cmsg));