summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLukas Slebodnik <lslebodn@redhat.com>2013-06-25 09:01:45 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-08-08 22:34:43 +0200
commit4a3ad2fa75904f342004b0067742bb778bf5b170 (patch)
tree38d214b8ccb5c2c3a64fd51d2092d95e81a27c5e /src
parent67771f699d39135431a1adbde5eb032e7697a608 (diff)
downloadsssd-4a3ad2fa75904f342004b0067742bb778bf5b170.tar.gz
sssd-4a3ad2fa75904f342004b0067742bb778bf5b170.tar.xz
sssd-4a3ad2fa75904f342004b0067742bb778bf5b170.zip
Handle too many results from getnetgr.
Diffstat (limited to 'src')
-rw-r--r--src/responder/nss/nsssrv_netgroup.c14
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) {