From f60a6fc682646a8c16fa8875456300c61cf3e979 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Fri, 8 Oct 2021 13:49:01 +0200 Subject: [PATCH 80/83] ad: use already discovered forest name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the cldap-ping on the current connection does not return a reply with the name of the forest root and the site of the client the stored values from the DNS discovery step are used. Resolves: https://github.com/SSSD/sssd/issues/5820 Reviewed-by: Pavel Březina (cherry picked from commit 99c4161910e542dd40c740032196d268c4163d07) Reviewed-by: Pavel Březina --- src/providers/ad/ad_subdomains.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c index 8a331c503..562047a02 100644 --- a/src/providers/ad/ad_subdomains.c +++ b/src/providers/ad/ad_subdomains.c @@ -2095,6 +2095,23 @@ static void ad_subdomains_refresh_master_done(struct tevent_req *subreq) return; } + if (state->forest == NULL) { + DEBUG(SSSDBG_MINOR_FAILURE, "Forest name was not found, using the one " + "which was already discovered [%s].\n", + state->ad_options->current_forest != NULL ? + state->ad_options->current_forest : + "- not available-"); + if (state->ad_options->current_forest != NULL) { + state->forest = talloc_strdup(state, + state->ad_options->current_forest); + if (state->forest == NULL) { + DEBUG(SSSDBG_OP_FAILURE, "Failed to copy forest name.\n"); + tevent_req_error(req, ENOMEM); + return; + } + } + } + realm = dp_opt_get_cstring(state->ad_options->basic, AD_KRB5_REALM); if (realm == NULL) { DEBUG(SSSDBG_CONF_SETTINGS, "Missing realm.\n"); -- 2.26.3