* nscd/nscd_helper.c (get_mapping): Handle short replies instead
authorjakub <jakub>
Sat, 7 Jul 2007 16:15:15 +0000 (16:15 +0000)
committerjakub <jakub>
Sat, 7 Jul 2007 16:15:15 +0000 (16:15 +0000)
of crashing.  When this is the case or if the reply is malformed,
don't try to close the new file descriptor since it does not
exist.
Patch in part by Guillaume Chazarain <guichaz@yahoo.fr>.

ChangeLog
nscd/nscd_helper.c

index 4c62a99..6b20f8f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-05-29  Ulrich Drepper  <drepper@redhat.com>
+
+       * nscd/nscd_helper.c (get_mapping): Handle short replies instead
+       of crashing.  When this is the case or if the reply is malformed,
+       don't try to close the new file descriptor since it does not
+       exist.
+       Patch in part by Guillaume Chazarain <guichaz@yahoo.fr>.
+
 2007-05-21  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Pass correct value
index 1f56ccf..79644a4 100644 (file)
@@ -269,11 +269,12 @@ get_mapping (request_type type, const char *key,
                        != 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)