From 9ad882c23deba9a4ea45ee3f8f603c860641ebf5 Mon Sep 17 00:00:00 2001 From: Pavel Reichl Date: Wed, 26 Feb 2014 16:58:24 +0000 Subject: [PATCH 1/4] NSS: sysdb_getnetgr check return value first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Output parameter was accessed before return value was checked. Reviewed-by: Michal Židek (cherry picked from commit 09be002e58babda513b4b75d2b9eb9b2c351fa26) --- src/responder/nss/nsssrv_netgroup.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 93794b089ed28c81d8367e0feaeaeeddc5e75e42..7114333481c0c1b1febe5f7d8e9bcd08e889b8b2 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -477,28 +477,29 @@ 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 (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; + } + ret = EOK; + } + + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, + "Failed to make request to our cache!\n"); + return EIO; + } + 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) { - if (step_ctx->check_next) { - dom = get_next_domain(dom, false); - continue; - } - else break; - } - ret = EOK; - } - - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, - "Failed to make request to our cache!\n"); - return EIO; - } ret = get_netgroup_entry(step_ctx->nctx, step_ctx->name, &netgr); -- 2.5.0