From d9794520ab4830a393970dd01c1cdf92dac94faa Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 5 Dec 2011 16:00:44 +0100 Subject: Responders: Split getting domain by name into separate function It will be reused later in the sudo responder. --- src/responder/common/responder.h | 2 ++ src/responder/common/responder_common.c | 13 +++++++++++++ src/responder/nss/nsssrv_cmd.c | 19 +++---------------- src/responder/nss/nsssrv_netgroup.c | 2 +- src/responder/pam/pamsrv_cmd.c | 7 ++----- 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h index 3b5ab8a4..f6784e91 100644 --- a/src/responder/common/responder.h +++ b/src/responder/common/responder.h @@ -150,6 +150,8 @@ int sss_parse_name(TALLOC_CTX *memctx, int sss_dp_get_domain_conn(struct resp_ctx *rctx, const char *domain, struct be_conn **_conn); +struct sss_domain_info * +responder_get_domain(struct sss_domain_info *doms, const char *domain); /* responder_cmd.c */ int sss_cmd_execute(struct cli_ctx *cctx, struct sss_cmd_table *sss_cmds); diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 1b28a92e..99b1a23a 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -624,6 +624,19 @@ int sss_dp_get_domain_conn(struct resp_ctx *rctx, const char *domain, return EOK; } +struct sss_domain_info * +responder_get_domain(struct sss_domain_info *doms, const char *domain) +{ + struct sss_domain_info *dom; + + for (dom = doms; dom; dom = dom->next) { + if (strcasecmp(dom->name, domain) == 0) break; + } + if (!dom) DEBUG(SSSDBG_CRIT_FAILURE, ("Unknown domain [%s]!\n", domain)); + + return dom; +} + int responder_logrotate(DBusMessage *message, struct sbus_connection *conn) { diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 720813fd..f0270acd 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -45,19 +45,6 @@ static int nss_cmd_send_error(struct nss_cmd_ctx *cmdctx, int err) return EOK; } -struct sss_domain_info *nss_get_dom(struct sss_domain_info *doms, - const char *domain) -{ - struct sss_domain_info *dom; - - for (dom = doms; dom; dom = dom->next) { - if (strcasecmp(dom->name, domain) == 0) break; - } - if (!dom) DEBUG(2, ("Unknown domain [%s]!\n", domain)); - - return dom; -} - int fill_empty(struct sss_packet *packet) { uint8_t *body; @@ -932,7 +919,7 @@ static int nss_cmd_getpwnam(struct cli_ctx *cctx) cmdctx->name, domname?domname:"")); if (domname) { - dctx->domain = nss_get_dom(cctx->rctx->domains, domname); + dctx->domain = responder_get_domain(cctx->rctx->domains, domname); if (!dctx->domain) { ret = ENOENT; goto done; @@ -2219,7 +2206,7 @@ static int nss_cmd_getgrnam(struct cli_ctx *cctx) cmdctx->name, domname?domname:"")); if (domname) { - dctx->domain = nss_get_dom(cctx->rctx->domains, domname); + dctx->domain = responder_get_domain(cctx->rctx->domains, domname); if (!dctx->domain) { ret = ENOENT; goto done; @@ -3277,7 +3264,7 @@ static int nss_cmd_initgroups(struct cli_ctx *cctx) cmdctx->name, domname?domname:"")); if (domname) { - dctx->domain = nss_get_dom(cctx->rctx->domains, domname); + dctx->domain = responder_get_domain(cctx->rctx->domains, domname); if (!dctx->domain) { ret = ENOENT; goto done; diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c index 189f8524..09b7fa63 100644 --- a/src/responder/nss/nsssrv_netgroup.c +++ b/src/responder/nss/nsssrv_netgroup.c @@ -204,7 +204,7 @@ static struct tevent_req *setnetgrent_send(TALLOC_CTX *mem_ctx, state->netgr_shortname, domname?domname:"")); if (domname) { - dctx->domain = nss_get_dom(client->rctx->domains, domname); + dctx->domain = responder_get_domain(client->rctx->domains, domname); if (!dctx->domain) { goto error; } diff --git a/src/responder/pam/pamsrv_cmd.c b/src/responder/pam/pamsrv_cmd.c index 40df755d..5f77697f 100644 --- a/src/responder/pam/pamsrv_cmd.c +++ b/src/responder/pam/pamsrv_cmd.c @@ -756,14 +756,11 @@ static int pam_forwarder(struct cli_ctx *cctx, int pam_cmd) /* now check user is valid */ if (pd->domain) { - for (dom = cctx->rctx->domains; dom; dom = dom->next) { - if (strcasecmp(dom->name, pd->domain) == 0) break; - } - if (!dom) { + preq->domain = responder_get_domain(cctx->rctx->domains, pd->domain); + if (preq->domain) { ret = ENOENT; goto done; } - preq->domain = dom; } else { for (dom = preq->cctx->rctx->domains; dom; dom = dom->next) { -- cgit