diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-12-18 18:14:46 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-12-19 10:32:54 +0100 |
commit | 2f127bc3fbcbae7a83a317d0766d2768a09ace03 (patch) | |
tree | f37354b9e04154701cc42fdaaa86b3e10b2902e2 | |
parent | 495ae80f2096e11473f1e4e8b12fe84ffc1daa5d (diff) | |
download | sssd-2f127bc3fbcbae7a83a317d0766d2768a09ace03.tar.gz sssd-2f127bc3fbcbae7a83a317d0766d2768a09ace03.tar.xz sssd-2f127bc3fbcbae7a83a317d0766d2768a09ace03.zip |
IPA: Call ipa_ad_subdom_refresh when server mode is initialized
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.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; } |