diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-05-29 14:45:49 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-05-29 14:45:49 +0000 |
commit | 5da4373cfd0bf070ec3ece378c4dea9b027c0ce2 (patch) | |
tree | 71dad8c9e0054210c9357b953fac1c842f9f797c /nscd/nscd_helper.c | |
parent | 40f57573d02e98db90f7d9e1dae6c3422d150d7b (diff) | |
download | glibc-5da4373cfd0bf070ec3ece378c4dea9b027c0ce2.zip glibc-5da4373cfd0bf070ec3ece378c4dea9b027c0ce2.tar.gz glibc-5da4373cfd0bf070ec3ece378c4dea9b027c0ce2.tar.bz2 |
* 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>.
Diffstat (limited to 'nscd/nscd_helper.c')
-rw-r--r-- | nscd/nscd_helper.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c index 1f56ccf..bab4913 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) |