[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
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
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