>From 5877db33fc0d52cf31f8b052a8a10ed16a307b0c Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Tue, 25 Jun 2013 09:01:45 +0200 Subject: [PATCH 1/2] Handle too many results from getnetgr. --- src/responder/nss/nsssrv_netgroup.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 4ec4161cf9c043792fffede1aa95acaf929a7071..12be52bf832cc5315f29b8faac22d4b6c44b3b22 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -363,7 +363,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); @@ -459,6 +466,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, dom, 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) { -- 1.8.1.4