diff --git a/ChangeLog b/ChangeLog index 74e840a215..f8d5b9d8c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2007-10-14 Ulrich Drepper + * 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 {