diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-12-18 18:14:46 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-12-19 20:22:31 +0100 |
commit | 414d36bc08bf3ddb8c742f4548711cc0b448bb85 (patch) | |
tree | cf247356d81cd6b3e8612d917c1c4d384bc9224c /src/providers | |
parent | 3a1056929310cf304449baf3feed94bc8fe46383 (diff) | |
download | sssd-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.
Diffstat (limited to 'src/providers')
-rw-r--r-- | src/providers/ipa/ipa_subdomains.c | 20 |
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; } |