UPdate.
authorUlrich Drepper <drepper@redhat.com>
Mon, 13 Sep 2004 06:07:02 +0000 (06:07 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 13 Sep 2004 06:07:02 +0000 (06:07 +0000)
* nscd/nscd_helper.c (get_mapping): Correctly check cmsg length.
Avoid file descriptor leak in case of size mismatch.

ChangeLog
nscd/nscd_helper.c

index 2b5dfc6..4e3dd23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-09-12  Ulrich Drepper  <drepper@redhat.com>
 
+       * nscd/nscd_helper.c (get_mapping): Correctly check cmsg length.
+       Avoid file descriptor leak in case of size mismatch.
+
        * nscd/nscd-client.h: Fix database structure layout for biarch.
        * nscd/mem.c (gc): Add casts to avoid warnings.
 
index 74983b9..ff27b07 100644 (file)
@@ -138,10 +138,12 @@ get_mapping (request_type type, const char *key,
     /* Failure or timeout.  */
     goto out_close2;
 
-  if (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg, 0)) != keylen
-      || msg.msg_controllen != CMSG_LEN (sizeof (int)))
+  if (TEMP_FAILURE_RETRY (__recvmsg (sock, &msg, 0)) != keylen)
     goto out_close2;
 
+  if (CMSG_FIRSTHDR (&msg)->cmsg_len != CMSG_LEN (sizeof (int)))
+    goto out_close;
+
   mapfd = *(int *) CMSG_DATA (cmsg);
 
   struct stat64 st;