The check_cache() patch broke them.
This patch should fix the bug (ticket #177).

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York
>From 1d683f1729c5be742d127e0bfb50f5289521d8da Mon Sep 17 00:00:00 2001
From: Simo Sorce <[email protected]>
Date: Fri, 11 Sep 2009 16:11:23 -0400
Subject: [PATCH 1/2] Fix getgrnam and getgrgid calls

The patch that added check_cache() broke them, no results returned for any group
with actual members ...
---
 server/responder/nss/nsssrv_cmd.c |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/server/responder/nss/nsssrv_cmd.c b/server/responder/nss/nsssrv_cmd.c
index 9260093..8ca0be6 100644
--- a/server/responder/nss/nsssrv_cmd.c
+++ b/server/responder/nss/nsssrv_cmd.c
@@ -287,16 +287,16 @@ static errno_t check_cache(struct nss_dom_ctx *dctx,
     sss_dp_callback_t cb = NULL;
 
     if (dctx->check_provider) {
-        switch (res->count) {
-        case 0:
+        if (res->count == 0) {
             /* This is a cache miss. We need to get the updated user
              * information before returning it.
              */
             call_provider = true;
             cb = callback;
-            break;
 
-        case 1:
+        } else if ((req_type == SSS_DP_GROUP) ||
+                   ((req_type == SSS_DP_USER) && (res->count == 1))) {
+
             timeout = nctx->cache_timeout;
             refresh_timeout = nctx->cache_refresh_timeout;
             now = time(NULL);
@@ -323,10 +323,12 @@ static errno_t check_cache(struct nss_dom_ctx *dctx,
                 call_provider = false;
                 cb = NULL;
             }
-            break;
 
-        default:
-            DEBUG(1, ("getpwnam call returned more than one result !?!\n"));
+        } else {
+            if (req_type == SSS_DP_USER) {
+                DEBUG(1, ("getpwXXX call returned more than one result!"
+                          " DB Corrupted?\n"));
+            }
             ret = nss_cmd_send_error(cmdctx, ENOENT);
             if (ret != EOK) {
                 NSS_CMD_FATAL_ERROR_CODE(cctx, ENOENT);
-- 
1.6.2.5

_______________________________________________
sssd-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to