summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--nscd/nscd_helper.c7
2 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f17fd5014..0851e6d97e 100644
--- 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-28 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/futimes.c (miss_utimensat): Don't define
diff --git a/nscd/nscd_helper.c b/nscd/nscd_helper.c
index 1f56ccf6aa..bab4913e9a 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)