summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2013-12-18 18:14:46 +0100
committerJakub Hrozek <jhrozek@redhat.com>2013-12-19 20:22:31 +0100
commit414d36bc08bf3ddb8c742f4548711cc0b448bb85 (patch)
treecf247356d81cd6b3e8612d917c1c4d384bc9224c
parent3a1056929310cf304449baf3feed94bc8fe46383 (diff)
downloadsssd-414d36bc08bf3ddb8c742f4548711cc0b448bb85.tar.gz
sssd-414d36bc08bf3ddb8c742f4548711cc0b448bb85.tar.xz
sssd-414d36bc08bf3ddb8c742f4548711cc0b448bb85.zip
IPA: Call ipa_ad_subdom_refresh when server mode is initializedsssd-1.11.2-17.el7
ipa_ad_subdom_refresh was called before IPA server context was initialized. On IPA server, this caused the code to dereference a NULL pointer and crash.
-rw-r--r--src/providers/ipa/ipa_subdomains.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 56fd4f996..2d28d7cd0 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -278,12 +278,6 @@ ipa_subdom_reinit(struct ipa_subdomains_ctx *ctx)
return ret;
}
- ret = ipa_ad_subdom_refresh(ctx->be_ctx, ctx->id_ctx, ctx->be_ctx->domain);
- if (ret != EOK) {
- DEBUG(SSSDBG_OP_FAILURE, ("ipa_ad_subdom_refresh failed.\n"));
- return ret;
- }
-
ret = sss_write_domain_mappings(ctx->be_ctx->domain,
dp_opt_get_bool(ctx->id_ctx->ipa_options->basic,
IPA_SERVER_MODE));
@@ -955,6 +949,13 @@ static void ipa_subdomains_handler_done(struct tevent_req *req)
DEBUG(SSSDBG_OP_FAILURE, ("Could not reinitialize subdomains\n"));
goto done;
}
+
+ ret = ipa_ad_subdom_refresh(ctx->sd_ctx->be_ctx, ctx->sd_ctx->id_ctx,
+ domain);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, ("ipa_ad_subdom_refresh failed.\n"));
+ goto done;
+ }
}
ret = sysdb_master_domain_update(domain);
@@ -1316,6 +1317,7 @@ int ipa_ad_subdom_init(struct be_ctx *be_ctx,
{
char *realm;
char *hostname;
+ errno_t ret;
if (dp_opt_get_bool(id_ctx->ipa_options->basic,
IPA_SERVER_MODE) == false) {
@@ -1360,5 +1362,11 @@ int ipa_ad_subdom_init(struct be_ctx *be_ctx,
id_ctx->server_mode->trusts = NULL;
id_ctx->server_mode->ext_groups = NULL;
+ ret = ipa_ad_subdom_refresh(be_ctx, id_ctx, be_ctx->domain);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_OP_FAILURE, ("ipa_ad_subdom_refresh failed.\n"));
+ return ret;
+ }
+
return EOK;
}