[SSSD] [sssd PR#693][synchronized] SYSDB: Fall back to the MPG result of getgrgid search if the non-MPG search for override doesn't match anything

2019-09-04 Thread jhrozek
   URL: https://github.com/SSSD/sssd/pull/693
Author: jhrozek
 Title: #693: SYSDB: Fall back to the MPG result of getgrgid search if the 
non-MPG search for override doesn't match anything
Action: synchronized

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/693/head:pr693
git checkout pr693
From 679f9b326f5d3dde0df8f9363bbbfa4f0cf1308b Mon Sep 17 00:00:00 2001
From: Jakub Hrozek 
Date: Wed, 7 Nov 2018 13:26:59 +0100
Subject: [PATCH] SYSDB: Fall back to the MPG result of getgrgid search if the
 non-MPG search for override doesn't match anything

---
 src/db/sysdb_search.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/db/sysdb_search.c b/src/db/sysdb_search.c
index a71c43112e..f059f99408 100644
--- a/src/db/sysdb_search.c
+++ b/src/db/sysdb_search.c
@@ -1293,6 +1293,7 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 const char *fmt_filter;
 struct ldb_dn *base_dn;
 struct ldb_result *res = NULL;
+struct ldb_result *mpg_res = NULL;
 int ret;
 static const char *default_attrs[] = SYSDB_GRSRC_ATTRS;
 const char **attrs = NULL;
@@ -1321,6 +1322,10 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
  * In case those are not the same, we're dealing with an
  * override and in order to return the proper overridden group
  * we must use the very same search used by a non-mpg domain
+ * to make sure that if the GID points to a group, it will
+ * be resolved. But we must also make sure to fall back
+ * to using the MPG result if the GID does not resolve
+ * to a group
  */
 fmt_filter = SYSDB_GRGID_MPG_FILTER;
 base_dn = sysdb_domain_dn(tmp_ctx, domain);
@@ -1343,6 +1348,7 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 if (ul_originalad_gid != 0 && ul_originalad_gid != ul_gid) {
 fmt_filter = SYSDB_GRGID_FILTER;
 base_dn = sysdb_group_base_dn(tmp_ctx, domain);
+mpg_res = res;
 res = NULL;
 }
 }
@@ -1367,6 +1373,14 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 }
 }
 
+if (mpg_res != NULL && mpg_res->count > 0
+&& (res == NULL || res->count == 0)) {
+/* The overriden group does not resolve to a proper group object,
+ * just use it as a result
+ */
+res = mpg_res;
+}
+
 ret = mpg_res_convert(res);
 if (ret) {
 goto done;
___
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org


[SSSD] [sssd PR#693][synchronized] SYSDB: Fall back to the MPG result of getgrgid search if the non-MPG search for override doesn't match anything

2019-01-20 Thread jhrozek
   URL: https://github.com/SSSD/sssd/pull/693
Author: jhrozek
 Title: #693: SYSDB: Fall back to the MPG result of getgrgid search if the 
non-MPG search for override doesn't match anything
Action: synchronized

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/693/head:pr693
git checkout pr693
From 33aa422e4a88dd3d0297479d8832d3dfdffd4b87 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek 
Date: Wed, 7 Nov 2018 13:26:59 +0100
Subject: [PATCH] SYSDB: Fall back to the MPG result of getgrgid search if the
 non-MPG search for override doesn't match anything

---
 src/db/sysdb_search.c | 14 ++
 1 file changed, 14 insertions(+)

diff --git a/src/db/sysdb_search.c b/src/db/sysdb_search.c
index 43341d4462..26f3b018e7 100644
--- a/src/db/sysdb_search.c
+++ b/src/db/sysdb_search.c
@@ -1088,6 +1088,7 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 const char *fmt_filter;
 struct ldb_dn *base_dn;
 struct ldb_result *res = NULL;
+struct ldb_result *mpg_res = NULL;
 int ret;
 static const char *default_attrs[] = SYSDB_GRSRC_ATTRS;
 const char **attrs = NULL;
@@ -1116,6 +1117,10 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
  * In case those are not the same, we're dealing with an
  * override and in order to return the proper overridden group
  * we must use the very same search used by a non-mpg domain
+ * to make sure that if the GID points to a group, it will
+ * be resolved. But we must also make sure to fall back
+ * to using the MPG result if the GID does not resolve
+ * to a group
  */
 fmt_filter = SYSDB_GRGID_MPG_FILTER;
 base_dn = sysdb_domain_dn(tmp_ctx, domain);
@@ -1138,6 +1143,7 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 if (ul_originalad_gid != 0 && ul_originalad_gid != ul_gid) {
 fmt_filter = SYSDB_GRGID_FILTER;
 base_dn = sysdb_group_base_dn(tmp_ctx, domain);
+mpg_res = res;
 res = NULL;
 }
 }
@@ -1162,6 +1168,14 @@ int sysdb_getgrgid_attrs(TALLOC_CTX *mem_ctx,
 }
 }
 
+if (mpg_res != NULL && mpg_res->count > 0
+&& (res == NULL || res->count == 0)) {
+/* The overriden group does not resolve to a proper group object,
+ * just use it as a result
+ */
+res = mpg_res;
+}
+
 ret = mpg_res_convert(res);
 if (ret) {
 goto done;
___
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/sssd-devel@lists.fedorahosted.org