From f53b40fb576d0666ffa88f0ab930338af00c2e4d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
Date: Fri, 1 Aug 2014 12:11:54 +0200
Subject: [PATCH] ad initgroups: continue if resolved SID is still missing

https://fedorahosted.org/sssd/ticket/2389
---
 src/providers/ldap/sdap_async_initgroups_ad.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/providers/ldap/sdap_async_initgroups_ad.c b/src/providers/ldap/sdap_async_initgroups_ad.c
index 425c0245c2890f8cef22b222cf0bfb28a72adabf..08e012d0fa0eb01b45d14a1a190100448641f53b 100644
--- a/src/providers/ldap/sdap_async_initgroups_ad.c
+++ b/src/providers/ldap/sdap_async_initgroups_ad.c
@@ -1215,13 +1215,20 @@ sdap_ad_tokengroups_update_posix_members(TALLOC_CTX *mem_ctx,
                 goto done;
             }
             num_valid_groups++;
-        } else if (ret == ENOENT && _missing != NULL) {
-            /* we need to download this group */
-            missing_sids[num_missing_sids] = talloc_steal(missing_sids, sid);
-            num_missing_sids++;
+        } else if (ret == ENOENT) {
+            if (_missing != NULL) {
+                /* we need to download this group */
+                missing_sids[num_missing_sids] = talloc_steal(missing_sids,
+                                                              sid);
+                num_missing_sids++;
 
-            DEBUG(SSSDBG_TRACE_FUNC, "Missing SID %s will be downloaded\n",
-                                      sid);
+                DEBUG(SSSDBG_TRACE_FUNC, "Missing SID %s will be downloaded\n",
+                                          sid);
+            }
+
+            /* else: We have downloaded missing groups but some of them may
+             * remained missing because they are outside of search base. We
+             * will just ignore them and continue with the next group. */
         } else {
             DEBUG(SSSDBG_MINOR_FAILURE, "Could not look up SID %s in sysdb: "
                                          "[%s]\n", sid, strerror(ret));
-- 
1.7.11.7

