summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2015-05-15 13:35:22 +0200
committerJakub Hrozek <jhrozek@redhat.com>2015-06-14 21:47:23 +0200
commitde2bad8ae08f09964834bda0f88db9de39f47c5c (patch)
tree473f93dec98af4ed37ccbcf25482d0c9e2f45811
parent933314e53fac878d1a9b126af216454172cb945a (diff)
downloadsssd-de2bad8ae08f09964834bda0f88db9de39f47c5c.tar.gz
sssd-de2bad8ae08f09964834bda0f88db9de39f47c5c.tar.xz
sssd-de2bad8ae08f09964834bda0f88db9de39f47c5c.zip
IPA/AD: Set up AD domain in ad_create_2way_trust_options
Related: https://fedorahosted.org/sssd/ticket/2638 Removed code duplication. Amends unit test to make sure we don't regress. Reviewed-by: Sumit Bose <sbose@redhat.com>
-rw-r--r--src/providers/ad/ad_common.c8
-rw-r--r--src/providers/ad/ad_common.h1
-rw-r--r--src/providers/ad/ad_subdomains.c14
-rw-r--r--src/providers/ipa/ipa_subdomains_server.c15
-rw-r--r--src/tests/cmocka/test_ad_common.c7
5 files changed, 25 insertions, 20 deletions
diff --git a/src/providers/ad/ad_common.c b/src/providers/ad/ad_common.c
index 60b234dc2..22af7cbd2 100644
--- a/src/providers/ad/ad_common.c
+++ b/src/providers/ad/ad_common.c
@@ -138,6 +138,7 @@ ad_create_default_options(TALLOC_CTX *mem_ctx)
struct ad_options *
ad_create_2way_trust_options(TALLOC_CTX *mem_ctx,
const char *realm,
+ const char *ad_domain,
const char *hostname)
{
struct ad_options *ad_options;
@@ -153,6 +154,13 @@ ad_create_2way_trust_options(TALLOC_CTX *mem_ctx,
return NULL;
}
+ ret = dp_opt_set_string(ad_options->basic, AD_DOMAIN, ad_domain);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, "Cannot set AD domain\n");
+ talloc_free(ad_options);
+ return NULL;
+ }
+
ret = dp_opt_set_string(ad_options->basic, AD_HOSTNAME, hostname);
if (ret != EOK) {
DEBUG(SSSDBG_OP_FAILURE, "Cannot set AD domain\n");
diff --git a/src/providers/ad/ad_common.h b/src/providers/ad/ad_common.h
index 07b9d734f..0766b4dc9 100644
--- a/src/providers/ad/ad_common.h
+++ b/src/providers/ad/ad_common.h
@@ -107,6 +107,7 @@ struct ad_options *ad_create_default_options(TALLOC_CTX *mem_ctx);
struct ad_options *ad_create_2way_trust_options(TALLOC_CTX *mem_ctx,
const char *realm,
+ const char *ad_domain,
const char *hostname);
errno_t
diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c
index f67d49a85..9b42f03a0 100644
--- a/src/providers/ad/ad_subdomains.c
+++ b/src/providers/ad/ad_subdomains.c
@@ -110,28 +110,22 @@ ad_subdom_ad_ctx_new(struct be_ctx *be_ctx,
realm = dp_opt_get_cstring(id_ctx->ad_options->basic, AD_KRB5_REALM);
hostname = dp_opt_get_cstring(id_ctx->ad_options->basic, AD_HOSTNAME);
- if (realm == NULL || hostname == NULL) {
+ ad_domain = subdom->name;
+ if (realm == NULL || hostname == NULL || ad_domain == NULL) {
DEBUG(SSSDBG_CONF_SETTINGS, "Missing realm or hostname.\n");
return EINVAL;
}
- ad_options = ad_create_2way_trust_options(id_ctx, realm, hostname);
+ ad_options = ad_create_2way_trust_options(id_ctx, realm,
+ ad_domain, hostname);
if (ad_options == NULL) {
DEBUG(SSSDBG_OP_FAILURE, "Cannot initialize AD options\n");
talloc_free(ad_options);
return ENOMEM;
}
- ad_domain = subdom->name;
ad_site_override = dp_opt_get_string(ad_options->basic, AD_SITE);
- ret = dp_opt_set_string(ad_options->basic, AD_DOMAIN, ad_domain);
- if (ret != EOK) {
- DEBUG(SSSDBG_OP_FAILURE, "Cannot set AD domain\n");
- talloc_free(ad_options);
- return ret;
- }
-
gc_service_name = talloc_asprintf(ad_options, "%s%s", "gc_", subdom->name);
if (gc_service_name == NULL) {
talloc_free(ad_options);
diff --git a/src/providers/ipa/ipa_subdomains_server.c b/src/providers/ipa/ipa_subdomains_server.c
index f20160f4b..c2e6f567e 100644
--- a/src/providers/ipa/ipa_subdomains_server.c
+++ b/src/providers/ipa/ipa_subdomains_server.c
@@ -138,13 +138,17 @@ ipa_ad_ctx_new(struct be_ctx *be_ctx,
struct ad_id_ctx *ad_id_ctx;
const char *gc_service_name;
struct ad_srv_plugin_ctx *srv_ctx;
- char *ad_domain;
+ const char *ad_domain;
const char *ad_site_override;
struct sdap_domain *sdom;
errno_t ret;
const char *extra_attrs;
+ ad_domain = subdom->name;
+ DEBUG(SSSDBG_TRACE_LIBS, "Setting up AD subdomain %s\n", subdom->name);
+
ad_options = ad_create_2way_trust_options(id_ctx, id_ctx->server_mode->realm,
+ ad_domain,
id_ctx->server_mode->hostname);
if (ad_options == NULL) {
DEBUG(SSSDBG_OP_FAILURE, "Cannot initialize AD options\n");
@@ -152,15 +156,6 @@ ipa_ad_ctx_new(struct be_ctx *be_ctx,
return ENOMEM;
}
- ad_domain = subdom->name;
-
- ret = dp_opt_set_string(ad_options->basic, AD_DOMAIN, ad_domain);
- if (ret != EOK) {
- DEBUG(SSSDBG_OP_FAILURE, "Cannot set AD domain\n");
- talloc_free(ad_options);
- return ret;
- }
-
ret = dp_opt_set_string(ad_options->basic, AD_KRB5_REALM,
id_ctx->server_mode->realm);
if (ret != EOK) {
diff --git a/src/tests/cmocka/test_ad_common.c b/src/tests/cmocka/test_ad_common.c
index de00e53f9..c541b87db 100644
--- a/src/tests/cmocka/test_ad_common.c
+++ b/src/tests/cmocka/test_ad_common.c
@@ -128,6 +128,7 @@ static void test_ad_create_2way_trust_options(void **state)
test_ctx->ad_ctx->ad_options = ad_create_2way_trust_options(
test_ctx->ad_ctx,
REALMNAME,
+ DOMNAME,
HOST_NAME);
assert_non_null(test_ctx->ad_ctx->ad_options);
@@ -140,6 +141,11 @@ static void test_ad_create_2way_trust_options(void **state)
assert_string_equal(s, REALMNAME);
s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
+ AD_DOMAIN);
+ assert_non_null(s);
+ assert_string_equal(s, DOMNAME);
+
+ s = dp_opt_get_string(test_ctx->ad_ctx->ad_options->basic,
AD_HOSTNAME);
assert_non_null(s);
assert_string_equal(s, HOST_NAME);
@@ -183,6 +189,7 @@ test_ldap_conn_setup(void **state)
ad_ctx->ad_options = ad_create_2way_trust_options(ad_ctx,
REALMNAME,
+ DOMNAME,
HOST_NAME);
assert_non_null(ad_ctx->ad_options);