From: Ulrich Drepper Date: Tue, 29 May 2007 14:45:49 +0000 (+0000) Subject: * nscd/nscd_helper.c (get_mapping): Handle short replies instead X-Git-Tag: cvs/glibc-2_6_1~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5da4373cfd0bf070ec3ece378c4dea9b027c0ce2;p=thirdparty%2Fglibc.git * 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 . --- diff --git a/ChangeLog b/ChangeLog index 5f17fd50149..0851e6d97e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-05-29 Ulrich Drepper + + * 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 . + 2007-05-28 Jakub Jelinek * sysdeps/unix/sysv/linux/futimes.c (miss_utimensat): Don't define diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c index 1f56ccf6aad..bab4913e9ab 100644 --- a/nscd/nscd_helper.c +++ b/nscd/nscd_helper.c @@ -271,9 +271,10 @@ get_mapping (request_type type, const char *key, mapfd = *(int *) CMSG_DATA (cmsg); - if (__builtin_expect (CMSG_FIRSTHDR (&msg)->cmsg_len - != CMSG_LEN (sizeof (int)), 0)) - goto out_close; + if (__builtin_expect (CMSG_FIRSTHDR (&msg) == NULL + || (CMSG_FIRSTHDR (&msg)->cmsg_len + != CMSG_LEN (sizeof (int))), 0)) + goto out_close2; struct stat64 st; if (__builtin_expect (strcmp (resdata, key) != 0, 0)