X-Git-Url: http://git.csclub.uwaterloo.ca/?p=kopensolaris-gnu%2Fglibc.git;a=blobdiff_plain;f=nscd%2Fnscd_helper.c;h=50146a093efa2124155283e8f760dc09c38df059;hp=1f56ccf6aad542a3e7ca6d5a6fc124f3ab53fe0b;hb=4b69b20a6f55e974e80e2eff97f0c79257673d5e;hpb=e405bb4f8e48b1fb216da27b2daaa9c323163af4 diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c index 1f56ccf6aa..50146a093e 100644 --- a/nscd/nscd_helper.c +++ b/nscd/nscd_helper.c @@ -265,15 +265,20 @@ get_mapping (request_type type, const char *key, if (wait_on_socket (sock) <= 0) goto out_close2; - if (__builtin_expect (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg, 0)) +# ifndef MSG_CMSG_CLOEXEC +# define MSG_CMSG_CLOEXEC 0 +# endif + if (__builtin_expect (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg, + MSG_CMSG_CLOEXEC)) != keylen, 0)) goto out_close2; - mapfd = *(int *) CMSG_DATA (cmsg); + if (__builtin_expect (CMSG_FIRSTHDR (&msg) == NULL + || (CMSG_FIRSTHDR (&msg)->cmsg_len + != CMSG_LEN (sizeof (int))), 0)) + goto out_close2; - if (__builtin_expect (CMSG_FIRSTHDR (&msg)->cmsg_len - != CMSG_LEN (sizeof (int)), 0)) - goto out_close; + mapfd = *(int *) CMSG_DATA (cmsg); struct stat64 st; if (__builtin_expect (strcmp (resdata, key) != 0, 0)