summaryrefslogtreecommitdiff
path: root/server/responder/nss
diff options
context:
space:
mode:
Diffstat (limited to 'server/responder/nss')
-rw-r--r--server/responder/nss/nsssrv_cmd.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/server/responder/nss/nsssrv_cmd.c b/server/responder/nss/nsssrv_cmd.c
index 92600933..8ca0be68 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);