From fbbc73b3d7fc1c1f4aa8c7f8d30ced6778c50506 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 2 Aug 2006 00:08:03 +0000 Subject: * nscd/initgrcache.c (addinitgroupsX): Judge successful lookups by status of NSS calls, not the number of returned entries. --- nscd/initgrcache.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'nscd') diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c index f2ff03a0b1..b4ae13903a 100644 --- a/nscd/initgrcache.c +++ b/nscd/initgrcache.c @@ -117,6 +117,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, goto out; /* Nothing added yet. */ + bool any_success = false; while (! no_more) { long int prev_start = start; @@ -158,6 +159,8 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) __libc_fatal ("illegal status in internal_getgrouplist"); + any_success |= status == NSS_STATUS_SUCCESS; + if (status != NSS_STATUS_SUCCESS && nss_next_action (nip, status) == NSS_ACTION_RETURN) break; @@ -171,7 +174,7 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, ssize_t total; ssize_t written; out: - if (start == 0) + if (!any_success) { /* Nothing found. Create a negative result record. */ written = total = sizeof (notfound); -- cgit v1.2.3