diff options
author | Sumit Bose <sbose@redhat.com> | 2012-09-28 11:22:59 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2012-10-01 21:45:22 +0200 |
commit | aac3ca699a09090072ae4d68bdda8dec990ae393 (patch) | |
tree | 71212910107a41b5ceaca0e9af27f5d971e744d8 | |
parent | 1542b85f13d72329685bdd97aa879c36d11f81be (diff) | |
download | sssd-aac3ca699a09090072ae4d68bdda8dec990ae393.tar.gz sssd-aac3ca699a09090072ae4d68bdda8dec990ae393.tar.bz2 sssd-aac3ca699a09090072ae4d68bdda8dec990ae393.zip |
Use flat name for master domain as well
-rw-r--r-- | src/responder/common/responder_common.c | 4 | ||||
-rw-r--r-- | src/responder/common/responder_get_domains.c | 15 | ||||
-rw-r--r-- | src/util/usertools.c | 3 |
3 files changed, 20 insertions, 2 deletions
diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 2f8cd84d..4fa81909 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -878,7 +878,9 @@ responder_get_domain(TALLOC_CTX *sd_mem_ctx, struct resp_ctx *rctx, int i; for (dom = rctx->domains; dom; dom = dom->next) { - if (strcasecmp(dom->name, domain) == 0) { + if (strcasecmp(dom->name, domain) == 0 || + (dom->flat_name != NULL && + strcasecmp(dom->flat_name, domain) == 0)) { ret_dom = dom; break; } diff --git a/src/responder/common/responder_get_domains.c b/src/responder/common/responder_get_domains.c index a98e6634..aff06e63 100644 --- a/src/responder/common/responder_get_domains.c +++ b/src/responder/common/responder_get_domains.c @@ -233,6 +233,7 @@ static errno_t get_domains_done(struct tevent_req *req) struct sss_domain_info **new_sd_list = NULL; size_t subdomain_count; struct sysdb_subdom **subdomains; + struct sysdb_subdom *master_info; state = tevent_req_data(req, struct sss_dp_domains_info); domain = state->dom; @@ -280,6 +281,20 @@ static errno_t get_domains_done(struct tevent_req *req) --c; } + if (domain->flat_name == NULL) { + ret = sysdb_master_domain_get_info(domain, domain->sysdb, &master_info); + if (ret != EOK) { + DEBUG(SSSDBG_FUNC_DATA, ("sysdb_master_domain_get_info " \ + "failed.\n")); + goto done; + } + + domain->flat_name = talloc_strdup(domain, master_info->flat_name); + talloc_free(master_info); + DEBUG(SSSDBG_TRACE_LIBS, ("Adding flat name [%s] to domain [%s].\n", + domain->flat_name, domain->name)); + } + errno = 0; ret = gettimeofday(&domain->subdomains_last_checked, NULL); if (ret == -1) { diff --git a/src/util/usertools.c b/src/util/usertools.c index 0ef39549..41f7b680 100644 --- a/src/util/usertools.c +++ b/src/util/usertools.c @@ -294,7 +294,8 @@ static struct sss_domain_info * match_any_domain_or_subdomain_name ( { uint32_t i; - if (strcasecmp (dom->name, dmatch) == 0) + if (strcasecmp (dom->name, dmatch) == 0 || + (dom->flat_name != NULL && strcasecmp(dom->flat_name, dmatch) == 0)) return dom; for (i = 0; i < dom->subdomain_count; i++) { |