summaryrefslogtreecommitdiffstats
path: root/src/responder/nss
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2014-06-24 09:47:09 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-06-25 16:04:21 +0200
commit8ca1875209325ddeb28fccb421457b76b4b0c7db (patch)
tree68719a9f322de27aea692c26c7f2cec2674f34a9 /src/responder/nss
parent50c009a3d51521880ddf568e7173d1ed9d5c2685 (diff)
downloadsssd-8ca1875209325ddeb28fccb421457b76b4b0c7db.tar.gz
sssd-8ca1875209325ddeb28fccb421457b76b4b0c7db.tar.xz
sssd-8ca1875209325ddeb28fccb421457b76b4b0c7db.zip
NSS: lookup_netgr_step don't access result on ENOENT
Don't access result if return value is not EOK. Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/responder/nss')
-rw-r--r--src/responder/nss/nsssrv_netgroup.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c
index 1c9b72ae3..86cb8cd4d 100644
--- a/src/responder/nss/nsssrv_netgroup.c
+++ b/src/responder/nss/nsssrv_netgroup.c
@@ -514,32 +514,30 @@ 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, dom, name, &step_ctx->dctx->res);
- if (ret == ENOENT) {
+ if (ret == EOK) {
+ if (step_ctx->dctx->res->count > 1) {
+ DEBUG(SSSDBG_FATAL_FAILURE,
+ "getnetgr call returned more than one result !?!\n");
+ ret = EMSGSIZE;
+ goto done;
+ }
+ } else if (ret == ENOENT) {
/* This netgroup was not found in this domain */
if (!step_ctx->dctx->check_provider) {
if (step_ctx->check_next) {
dom = get_next_domain(dom, false);
continue;
+ } else {
+ break;
}
- else break;
}
- ret = EOK;
- }
-
- if (ret != EOK) {
+ } else {
DEBUG(SSSDBG_CRIT_FAILURE,
"Failed to make request to our cache!\n");
ret = EIO;
goto done;
}
- if (step_ctx->dctx->res->count > 1) {
- DEBUG(SSSDBG_FATAL_FAILURE,
- "getnetgr call returned more than one result !?!\n");
- ret = EMSGSIZE;
- goto done;
- }
-
ret = get_netgroup_entry(step_ctx->nctx, step_ctx->name,
&netgr);
if (ret != EOK) {