diff options
author | Lukas Slebodnik <lslebodn@redhat.com> | 2013-06-25 09:01:45 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-08-08 23:11:52 +0200 |
commit | 43b0734dd79820c72a876eb78f0029139008497f (patch) | |
tree | 96d386b2291d97bb9702d892a626fd7c72a2cd91 /src/responder/nss | |
parent | 66815ef2471504537ca1a8774b01ca771d04af49 (diff) | |
download | sssd-43b0734dd79820c72a876eb78f0029139008497f.tar.gz sssd-43b0734dd79820c72a876eb78f0029139008497f.tar.xz sssd-43b0734dd79820c72a876eb78f0029139008497f.zip |
Handle too many results from getnetgr.
Diffstat (limited to 'src/responder/nss')
-rw-r--r-- | src/responder/nss/nsssrv_netgroup.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 3f1fa8795..a0841d367 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -369,7 +369,14 @@ static errno_t setnetgrent_retry(struct tevent_req *req) } ret = lookup_netgr_step(step_ctx); - if (ret != EOK) { + switch (ret) { + case EOK: + break; + case EMSGSIZE: + state->netgr->ready = true; + ret = ENOENT; + /* FALLTHROUGH */ + default: goto done; } tevent_req_done(req); @@ -465,6 +472,11 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx) /* Look up the netgroup in the cache */ ret = sysdb_getnetgr(step_ctx->dctx, sysdb, name, &step_ctx->dctx->res); + if (step_ctx->dctx->res->count > 1) { + DEBUG(SSSDBG_FATAL_FAILURE, + ("getnetgr call returned more than one result !?!\n")); + return EMSGSIZE; + } if (ret == ENOENT) { /* This netgroup was not found in this domain */ if (!step_ctx->dctx->check_provider) { |