Blame SOURCES/0043-ad-remove-all-subdomains-if-only-master-domain-is-en.patch

8d3578
From 5605fa5f8adf79fa60286f5427aa2f989e663de0 Mon Sep 17 00:00:00 2001
8d3578
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
8d3578
Date: Tue, 11 Jun 2019 12:18:34 +0200
8d3578
Subject: [PATCH 43/44] ad: remove all subdomains if only master domain is
8d3578
 enabled
8d3578
8d3578
Resolves:
8d3578
https://pagure.io/SSSD/sssd/issue/4009
8d3578
8d3578
Reviewed-by: Sumit Bose <sbose@redhat.com>
8d3578
(cherry picked from commit d0bdaabbc95bc9ee3253e1376d849e6a8bd6c6f0)
8d3578
---
8d3578
 src/providers/ad/ad_subdomains.c | 23 +++++++++++++++++++++++
8d3578
 1 file changed, 23 insertions(+)
8d3578
8d3578
diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c
8d3578
index 57438fdd5..0f6d781ae 100644
8d3578
--- a/src/providers/ad/ad_subdomains.c
8d3578
+++ b/src/providers/ad/ad_subdomains.c
8d3578
@@ -1804,9 +1804,11 @@ static void ad_subdomains_refresh_gc_check_done(struct tevent_req *subreq)
8d3578
 {
8d3578
     struct ad_subdomains_refresh_state *state;
8d3578
     struct tevent_req *req;
8d3578
+    const char **subdoms;
8d3578
     const char *ad_domain;
8d3578
     bool is_gc_usable;
8d3578
     errno_t ret;
8d3578
+    int i;
8d3578
 
8d3578
     req = tevent_req_callback_data(subreq, struct tevent_req);
8d3578
     state = tevent_req_data(req, struct ad_subdomains_refresh_state);
8d3578
@@ -1832,6 +1834,27 @@ static void ad_subdomains_refresh_gc_check_done(struct tevent_req *subreq)
8d3578
                            state->be_ctx->domain->name) == 0) {
8d3578
                 DEBUG(SSSDBG_TRACE_FUNC,
8d3578
                       "No other enabled domain than master.\n");
8d3578
+
8d3578
+                ret = sysdb_list_subdomains(state, state->be_ctx->domain->sysdb,
8d3578
+                                            &subdoms);
8d3578
+                if (ret != EOK) {
8d3578
+                    DEBUG(SSSDBG_OP_FAILURE, "Unable to list subdomains "
8d3578
+                          "[%d]: %s\n", ret, sss_strerror(ret));
8d3578
+                    tevent_req_error(req, ret);
8d3578
+                    return;
8d3578
+                }
8d3578
+
8d3578
+                for (i = 0; subdoms[i] != NULL; i++) {
8d3578
+                    ret = sysdb_subdomain_delete(state->be_ctx->domain->sysdb,
8d3578
+                                                 subdoms[i]);
8d3578
+                    if (ret != EOK) {
8d3578
+                        DEBUG(SSSDBG_OP_FAILURE, "Unable to remove subdomain "
8d3578
+                              "[%d]: %s\n", ret, sss_strerror(ret));
8d3578
+                        tevent_req_error(req, ret);
8d3578
+                        return;
8d3578
+                    }
8d3578
+                }
8d3578
+
8d3578
                 tevent_req_done(req);
8d3578
                 return;
8d3578
             }
8d3578
-- 
8d3578
2.20.1
8d3578