diff options
-rw-r--r-- | src/confdb/confdb.h | 1 | ||||
-rw-r--r-- | src/providers/ad/ad_access.c | 2 | ||||
-rw-r--r-- | src/providers/ipa/ipa_hbac_common.c | 2 | ||||
-rw-r--r-- | src/providers/ipa/ipa_subdomains_id.c | 5 | ||||
-rw-r--r-- | src/providers/krb5/krb5_utils.c | 3 | ||||
-rw-r--r-- | src/providers/ldap/sdap_access.c | 2 | ||||
-rw-r--r-- | src/responder/common/responder_get_domains.c | 1 | ||||
-rw-r--r-- | src/tests/sysdb-tests.c | 6 | ||||
-rw-r--r-- | src/util/domain_info_utils.c | 12 | ||||
-rw-r--r-- | src/util/util.h | 1 |
10 files changed, 25 insertions, 10 deletions
diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 81323dda7..45412538a 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -232,6 +232,7 @@ struct sss_domain_info { struct sss_domain_info **subdomains; uint32_t subdomain_count; struct sss_domain_info *parent; + char *realm; char *flat_name; char *domain_id; struct timeval subdomains_last_checked; diff --git a/src/providers/ad/ad_access.c b/src/providers/ad/ad_access.c index 9508ffb27..0fa7d6d3a 100644 --- a/src/providers/ad/ad_access.c +++ b/src/providers/ad/ad_access.c @@ -45,7 +45,7 @@ ad_access_handler(struct be_req *breq) /* Handle subdomains */ if (strcasecmp(pd->domain, be_ctx->domain->name) != 0) { domain = new_subdomain(breq, be_ctx->domain, - pd->domain, NULL, NULL); + pd->domain, NULL, NULL, NULL); if (domain == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("new_subdomain failed.\n")); be_req_terminate(breq, DP_ERR_FATAL, PAM_SYSTEM_ERR, NULL); diff --git a/src/providers/ipa/ipa_hbac_common.c b/src/providers/ipa/ipa_hbac_common.c index 90ec0ce4a..8a1c91ea9 100644 --- a/src/providers/ipa/ipa_hbac_common.c +++ b/src/providers/ipa/ipa_hbac_common.c @@ -448,7 +448,7 @@ hbac_ctx_to_eval_request(TALLOC_CTX *mem_ctx, /* Get user the user name and groups, * take care of subdomain users as well */ if (strcasecmp(pd->domain, domain->name) != 0) { - user_dom = new_subdomain(tmp_ctx, domain, pd->domain, NULL, NULL); + user_dom = new_subdomain(tmp_ctx, domain, pd->domain, NULL, NULL, NULL); if (user_dom == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("new_subdomain failed.\n")); ret = ENOMEM; diff --git a/src/providers/ipa/ipa_subdomains_id.c b/src/providers/ipa/ipa_subdomains_id.c index 481b99806..264eb03ce 100644 --- a/src/providers/ipa/ipa_subdomains_id.c +++ b/src/providers/ipa/ipa_subdomains_id.c @@ -76,8 +76,9 @@ struct tevent_req *ipa_get_subdom_acct_send(TALLOC_CTX *memctx, } state->domain = new_subdomain(state, state->ctx->be->domain, ar->domain, - get_flat_name_from_subdomain_name(ctx->be,ar->domain), - NULL); + NULL, + get_flat_name_from_subdomain_name(ctx->be,ar->domain), + NULL); if (state->domain == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("new_subdomain failed.\n")); ret = ENOMEM; diff --git a/src/providers/krb5/krb5_utils.c b/src/providers/krb5/krb5_utils.c index e71f6c4df..977186998 100644 --- a/src/providers/krb5/krb5_utils.c +++ b/src/providers/krb5/krb5_utils.c @@ -1173,7 +1173,8 @@ errno_t get_domain_or_subdomain(TALLOC_CTX *mem_ctx, struct be_ctx *be_ctx, if (domain_name != NULL && strcasecmp(domain_name, be_ctx->domain->name) != 0) { - *dom = new_subdomain(mem_ctx, be_ctx->domain, domain_name, NULL, NULL); + *dom = new_subdomain(mem_ctx, be_ctx->domain, + domain_name, NULL, NULL, NULL); if (*dom == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("new_subdomain failed.\n")); return ENOMEM; diff --git a/src/providers/ldap/sdap_access.c b/src/providers/ldap/sdap_access.c index ee20a84a7..aebf45240 100644 --- a/src/providers/ldap/sdap_access.c +++ b/src/providers/ldap/sdap_access.c @@ -128,7 +128,7 @@ sdap_access_send(TALLOC_CTX *mem_ctx, /* Get original user DN, take care of subdomain users as well */ if (strcasecmp(pd->domain, be_ctx->domain->name) != 0) { user_dom = new_subdomain(state, be_ctx->domain, pd->domain, - NULL, NULL); + NULL, NULL, NULL); if (user_dom == NULL) { DEBUG(SSSDBG_OP_FAILURE, ("new_subdomain failed.\n")); ret = ENOMEM; diff --git a/src/responder/common/responder_get_domains.c b/src/responder/common/responder_get_domains.c index d40f373ea..e52d61c28 100644 --- a/src/responder/common/responder_get_domains.c +++ b/src/responder/common/responder_get_domains.c @@ -313,6 +313,7 @@ process_subdomains(struct sss_domain_info *domain) subdomains[c]->name, domain->name)); new_sd_list[c] = new_subdomain(new_sd_list, domain, subdomains[c]->name, + subdomains[c]->realm, subdomains[c]->flat_name, subdomains[c]->id); if (new_sd_list[c] == NULL) { diff --git a/src/tests/sysdb-tests.c b/src/tests/sysdb-tests.c index 42331297f..6c723c72a 100644 --- a/src/tests/sysdb-tests.c +++ b/src/tests/sysdb-tests.c @@ -4552,7 +4552,7 @@ START_TEST(test_sysdb_subdomain_store_user) ret, strerror(ret)); subdomain = new_subdomain(test_ctx, test_ctx->domain, "test.sub", - NULL, NULL); + NULL, NULL, NULL); fail_unless(subdomain != NULL, "new_subdomain failed."); ret = sysdb_store_user(subdomain->sysdb, subdomain, "subdomuser", @@ -4608,7 +4608,7 @@ START_TEST(test_sysdb_subdomain_user_ops) ret, strerror(ret)); subdomain = new_subdomain(test_ctx, test_ctx->domain, "test.sub", - NULL, NULL); + NULL, NULL, NULL); fail_unless(subdomain != NULL, "new_subdomain failed."); ret = sysdb_store_user(subdomain->sysdb, subdomain, "subdomuser", @@ -4660,7 +4660,7 @@ START_TEST(test_sysdb_subdomain_group_ops) ret, strerror(ret)); subdomain = new_subdomain(test_ctx, test_ctx->domain, "test.sub", - NULL, NULL); + NULL, NULL, NULL); fail_unless(subdomain != NULL, "new_subdomain failed."); ret = sysdb_store_group(subdomain->sysdb, subdomain, diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c index d0f709ece..c45c83d64 100644 --- a/src/util/domain_info_utils.c +++ b/src/util/domain_info_utils.c @@ -25,6 +25,7 @@ struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx, struct sss_domain_info *parent, const char *name, + const char *realm, const char *flat_name, const char *id) { @@ -55,6 +56,14 @@ struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx, goto fail; } + if (realm != NULL) { + dom->realm = talloc_strdup(dom, realm); + if (dom->realm == NULL) { + DEBUG(SSSDBG_OP_FAILURE, ("Failed to copy realm name.\n")); + goto fail; + } + } + if (flat_name != NULL) { dom->flat_name = talloc_strdup(dom, flat_name); if (dom->flat_name == NULL) { @@ -105,7 +114,8 @@ fail: struct sss_domain_info *copy_subdomain(TALLOC_CTX *mem_ctx, struct sss_domain_info *subdomain) { - return new_subdomain(mem_ctx, subdomain->parent, subdomain->name, + return new_subdomain(mem_ctx, subdomain->parent, + subdomain->name, subdomain->realm, subdomain->flat_name, subdomain->domain_id); } diff --git a/src/util/util.h b/src/util/util.h index df1ee3b08..a2b2a2d3e 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -569,6 +569,7 @@ void to_sized_string(struct sized_string *out, const char *in); struct sss_domain_info *new_subdomain(TALLOC_CTX *mem_ctx, struct sss_domain_info *parent, const char *name, + const char *realm, const char *flat_name, const char *id); struct sss_domain_info *copy_subdomain(TALLOC_CTX *mem_ctx, |