From b9862f79efefb5b62e03e1acf7e2fddc20339ab2 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 28 Sep 2012 11:22:59 +0200 Subject: [PATCH 2/3] Use flat name for master domain as well --- src/responder/common/responder_common.c | 4 +++- src/responder/common/responder_get_domains.c | 15 +++++++++++++++ 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 2f8cd84d41292e7f5d4f08bc1f92f6c3954bf721..4fa8190977e22dd6211fb5b2ec37cbfe64cac5e9 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 a98e663416ee37a932e2cdfb3d1382f9b5bf9fed..aff06e630be6ce61cf32996969fedc7c27926598 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 0ef395497d6e56425983a62e3f920af6b6988fb8..41f7b6803880319b35bf5c2bbb704e115b13a594 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++) { -- 1.7.7.6