about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--nscd/nscd_getgr_r.c18
2 files changed, 11 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 74e840a215..f8d5b9d8c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2007-10-14  Ulrich Drepper  <drepper@redhat.com>
 
+	* nscd/nscd_getgr_r.c (nscd_getgr_r): Store result of successful
+	read from nscd.
+
 	* sysdeps/posix/getaddrinfo.c (struct sort_result): Add
 	service_order.
 	(rfc3484_sort): Make sure that even if qsort doesn't support
diff --git a/nscd/nscd_getgr_r.c b/nscd/nscd_getgr_r.c
index afb4d20435..b84b06b3ce 100644
--- a/nscd/nscd_getgr_r.c
+++ b/nscd/nscd_getgr_r.c
@@ -266,18 +266,16 @@ nscd_getgr_r (const char *key, size_t keylen, request_type type,
       /* If there are no group members TOTAL_LEN is zero.  */
       if (gr_name == NULL)
 	{
-	  if (total_len > 0)
+	  if (total_len > 0
+	      && __builtin_expect (__readall (sock, resultbuf->gr_mem[0],
+					      total_len) != total_len, 0))
 	    {
-	      size_t n = __readall (sock, resultbuf->gr_mem[0], total_len);
-	      if (__builtin_expect (n != total_len, 0))
-		{
-		  /* The `errno' to some value != ERANGE.  */
-		  __set_errno (ENOENT);
-		  retval = ENOENT;
-		}
-	      else
-		*result = resultbuf;
+	      /* The `errno' to some value != ERANGE.  */
+	      __set_errno (ENOENT);
+	      retval = ENOENT;
 	    }
+	  else
+	    *result = resultbuf;
 	}
       else
 	{