From ab9a8db7539bea30effe398d9bd82b1ecadd8a6f Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Mon, 20 Nov 2017 12:08:30 +0100 Subject: [PATCH 62/67] UTIL: add find_domain_by_object_name_ex() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The _ex version of find_domain_by_object_name() has a additional option 'strict'. If set to 'true' NULL is return instead to domain from the first argument. This way the caller can see if the provider object name really contains a known domain. Related to https://pagure.io/SSSD/sssd/issue/3579 Reviewed-by: Fabiano FidĂȘncio (cherry picked from commit b6d3da6cfe78c6d0ddb854088bc23e293b336401) --- src/util/domain_info_utils.c | 17 ++++++++++++++--- src/util/util.h | 4 ++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/util/domain_info_utils.c b/src/util/domain_info_utils.c index 3a3f5130a32e2c5fe4b81819bf2de697a4474111..66077092a40111967a98b0937506d9e4472f50d5 100644 --- a/src/util/domain_info_utils.c +++ b/src/util/domain_info_utils.c @@ -174,8 +174,8 @@ sss_get_domain_by_sid_ldap_fallback(struct sss_domain_info *domain, } struct sss_domain_info * -find_domain_by_object_name(struct sss_domain_info *domain, - const char *object_name) +find_domain_by_object_name_ex(struct sss_domain_info *domain, + const char *object_name, bool strict) { TALLOC_CTX *tmp_ctx; struct sss_domain_info *dom = NULL; @@ -197,7 +197,11 @@ find_domain_by_object_name(struct sss_domain_info *domain, } if (domainname == NULL) { - dom = domain; + if (strict) { + dom = NULL; + } else { + dom = domain; + } } else { dom = find_domain_by_name(domain, domainname, true); } @@ -207,6 +211,13 @@ done: return dom; } +struct sss_domain_info * +find_domain_by_object_name(struct sss_domain_info *domain, + const char *object_name) +{ + return find_domain_by_object_name_ex(domain, object_name, false); +} + errno_t sssd_domain_init(TALLOC_CTX *mem_ctx, struct confdb_ctx *cdb, const char *domain_name, diff --git a/src/util/util.h b/src/util/util.h index 37383011763a9a2a3c2c066215e3ed94aca77308..2521b1789b0b8701b1fbcce33890eedb7fe18d5e 100644 --- a/src/util/util.h +++ b/src/util/util.h @@ -551,6 +551,10 @@ struct sss_domain_info * find_domain_by_object_name(struct sss_domain_info *domain, const char *object_name); +struct sss_domain_info * +find_domain_by_object_name_ex(struct sss_domain_info *domain, + const char *object_name, bool strict); + bool subdomain_enumerates(struct sss_domain_info *parent, const char *sd_name); -- 2.14.3