From 727d46f4dace666c809310b3f685eef387023f65 Mon Sep 17 00:00:00 2001 From: Pavel Březina Date: Thu, 2 Oct 2014 16:13:34 +0200 Subject: Add sysdb_search_[user|group]_override_attrs_by_name Reviewed-by: Sumit Bose --- src/db/sysdb_views.c | 62 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 25 deletions(-) (limited to 'src/db/sysdb_views.c') diff --git a/src/db/sysdb_views.c b/src/db/sysdb_views.c index acb5d8138..926cd847c 100644 --- a/src/db/sysdb_views.c +++ b/src/db/sysdb_views.c @@ -661,14 +661,12 @@ enum override_object_type { static errno_t sysdb_search_override_by_name(TALLOC_CTX *mem_ctx, struct sss_domain_info *domain, const char *name, - enum override_object_type type, + const char *filter, + const char **attrs, struct ldb_result **override_obj, struct ldb_result **orig_obj) { TALLOC_CTX *tmp_ctx; - static const char *user_attrs[] = SYSDB_PW_ATTRS; - static const char *group_attrs[] = SYSDB_GRSRC_ATTRS; - const char **attrs; struct ldb_dn *base_dn; struct ldb_result *override_res; struct ldb_result *orig_res; @@ -677,7 +675,6 @@ static errno_t sysdb_search_override_by_name(TALLOC_CTX *mem_ctx, const char *src_name; int ret; const char *orig_obj_dn; - const char *filter; tmp_ctx = talloc_new(NULL); if (!tmp_ctx) { @@ -708,22 +705,6 @@ static errno_t sysdb_search_override_by_name(TALLOC_CTX *mem_ctx, goto done; } - switch(type) { - case OO_TYPE_USER: - filter = SYSDB_USER_NAME_OVERRIDE_FILTER; - attrs = user_attrs; - break; - case OO_TYPE_GROUP: - filter = SYSDB_GROUP_NAME_OVERRIDE_FILTER; - attrs = group_attrs; - break; - default: - DEBUG(SSSDBG_CRIT_FAILURE, "Unexpected override object type [%d].\n", - type); - ret = EINVAL; - goto done; - } - ret = ldb_search(domain->sysdb->ldb, tmp_ctx, &override_res, base_dn, LDB_SCOPE_SUBTREE, attrs, filter, lc_sanitized_name, @@ -784,14 +765,42 @@ done: return ret; } +errno_t sysdb_search_user_override_attrs_by_name(TALLOC_CTX *mem_ctx, + struct sss_domain_info *domain, + const char *name, + const char **attrs, + struct ldb_result **override_obj, + struct ldb_result **orig_obj) +{ + + return sysdb_search_override_by_name(mem_ctx, domain, name, + SYSDB_USER_NAME_OVERRIDE_FILTER, + attrs, override_obj, orig_obj); +} + +errno_t sysdb_search_group_override_attrs_by_name(TALLOC_CTX *mem_ctx, + struct sss_domain_info *domain, + const char *name, + const char **attrs, + struct ldb_result **override_obj, + struct ldb_result **orig_obj) +{ + return sysdb_search_override_by_name(mem_ctx, domain, name, + SYSDB_GROUP_NAME_OVERRIDE_FILTER, + attrs, override_obj, orig_obj); +} + errno_t sysdb_search_user_override_by_name(TALLOC_CTX *mem_ctx, struct sss_domain_info *domain, const char *name, struct ldb_result **override_obj, struct ldb_result **orig_obj) { - return sysdb_search_override_by_name(mem_ctx, domain, name, OO_TYPE_USER, - override_obj, orig_obj); + const char *attrs[] = SYSDB_PW_ATTRS; + + return sysdb_search_override_by_name(mem_ctx, domain, name, + SYSDB_USER_NAME_OVERRIDE_FILTER, + attrs, override_obj, orig_obj); } errno_t sysdb_search_group_override_by_name(TALLOC_CTX *mem_ctx, @@ -800,8 +809,11 @@ errno_t sysdb_search_group_override_by_name(TALLOC_CTX *mem_ctx, struct ldb_result **override_obj, struct ldb_result **orig_obj) { - return sysdb_search_override_by_name(mem_ctx, domain, name, OO_TYPE_GROUP, - override_obj, orig_obj); + const char *attrs[] = SYSDB_GRSRC_ATTRS; + + return sysdb_search_override_by_name(mem_ctx, domain, name, + SYSDB_GROUP_NAME_OVERRIDE_FILTER, + attrs, override_obj, orig_obj); } static errno_t sysdb_search_override_by_id(TALLOC_CTX *mem_ctx, -- cgit