dpward / rpms / sssd

Forked from rpms/sssd 3 years ago
Clone

Blame SOURCES/0120-LDAP-AD-Do-not-fail-in-case-rfc2307bis_nested_groups.patch

bb7cd1
From 428909abd59f1eb8bb02b6627f37f61af3de2691 Mon Sep 17 00:00:00 2001
956cae
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
956cae
Date: Mon, 1 May 2017 14:49:50 +0200
bb7cd1
Subject: [PATCH 120/120] LDAP/AD: Do not fail in case
956cae
 rfc2307bis_nested_groups_recv() returns ENOENT
956cae
MIME-Version: 1.0
956cae
Content-Type: text/plain; charset=UTF-8
956cae
Content-Transfer-Encoding: 8bit
956cae
956cae
Commit 25699846 introduced a regression seen when an initgroup lookup is
956cae
done and there's no nested groups involved.
956cae
956cae
In this scenario the whole lookup fails due to an ENOENT returned by
956cae
rfc2307bis_nested_groups_recv(), which leads to the user removal from
956cae
sysdb causing some authentication issues.
956cae
956cae
Resolves:
956cae
https://pagure.io/SSSD/sssd/issue/3331
956cae
956cae
Signed-off-by: Fabiano FidĂȘncio <fidencio@redhat.com>
956cae
Reviewed-by: Sumit Bose <sbose@redhat.com>
956cae
---
956cae
 src/providers/ldap/sdap_async_initgroups_ad.c | 8 +++++++-
956cae
 1 file changed, 7 insertions(+), 1 deletion(-)
956cae
956cae
diff --git a/src/providers/ldap/sdap_async_initgroups_ad.c b/src/providers/ldap/sdap_async_initgroups_ad.c
bb7cd1
index f75b9211e2a06616dbf9b948e60b023a818c7e19..2831be9776293260aeec0e2ff85160f1938bdb32 100644
956cae
--- a/src/providers/ldap/sdap_async_initgroups_ad.c
956cae
+++ b/src/providers/ldap/sdap_async_initgroups_ad.c
956cae
@@ -1746,7 +1746,13 @@ static void sdap_ad_get_domain_local_groups_done(struct tevent_req *subreq)
956cae
 
956cae
     ret = rfc2307bis_nested_groups_recv(subreq);
956cae
     talloc_zfree(subreq);
956cae
-    if (ret != EOK) {
956cae
+    if (ret == ENOENT) {
956cae
+        /* In case of ENOENT we can just proceed without making
956cae
+         * sdap_get_initgr_user() fail because there's no nested
956cae
+         * groups for this user/group. */
956cae
+        ret = EOK;
956cae
+        goto done;
956cae
+    } else if (ret != EOK) {
956cae
         tevent_req_error(req, ret);
956cae
         return;
956cae
     }
956cae
-- 
956cae
2.9.3
956cae