diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2016-04-08 16:29:42 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2016-07-06 17:32:59 +0200 |
commit | 99990d4e4d929db39a1fc1d0d65406b677095dba (patch) | |
tree | 77b288a9434f8655065273c1a7931390fc1e94cc /src/db/sysdb.c | |
parent | 98c6a6ae4c260fc8156d26876c072ca189dd21dd (diff) | |
download | sssd-99990d4e4d929db39a1fc1d0d65406b677095dba.tar.gz sssd-99990d4e4d929db39a1fc1d0d65406b677095dba.tar.xz sssd-99990d4e4d929db39a1fc1d0d65406b677095dba.zip |
SYSDB: Add a utility function to return a list of qualified names
Adds a utility function the LDAP provider can use. This is different
from sss_create_internal_fqname_list in the sense that the LDAP provider
passes in the attribute name that contains the name attribute value.
Diffstat (limited to 'src/db/sysdb.c')
-rw-r--r-- | src/db/sysdb.c | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c index cb35d1c65..6f0b1b9e9 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -1442,12 +1442,13 @@ done: return ret; } -errno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb, - TALLOC_CTX *mem_ctx, - struct sysdb_attrs **attr_list, - size_t attr_count, - const char *ldap_attr, - char ***name_list) +static errno_t _sysdb_attrs_primary_name_list(struct sss_domain_info *domain, + TALLOC_CTX *mem_ctx, + struct sysdb_attrs **attr_list, + size_t attr_count, + const char *ldap_attr, + bool qualify_names, + char ***name_list) { errno_t ret; size_t i, j; @@ -1462,7 +1463,7 @@ errno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb, j = 0; for (i = 0; i < attr_count; i++) { - ret = sysdb_attrs_primary_name(sysdb, + ret = sysdb_attrs_primary_name(domain->sysdb, attr_list[i], ldap_attr, &name); @@ -1472,7 +1473,11 @@ errno_t sysdb_attrs_primary_name_list(struct sysdb_ctx *sysdb, continue; } - list[j] = talloc_strdup(list, name); + if (qualify_names == false) { + list[j] = talloc_strdup(list, name); + } else { + list[j] = sss_create_internal_fqname(list, name, domain->name); + } if (!list[j]) { ret = ENOMEM; goto done; @@ -1495,6 +1500,30 @@ done: return ret; } +errno_t sysdb_attrs_primary_name_list(struct sss_domain_info *domain, + TALLOC_CTX *mem_ctx, + struct sysdb_attrs **attr_list, + size_t attr_count, + const char *ldap_attr, + char ***name_list) +{ + return _sysdb_attrs_primary_name_list(domain, mem_ctx, attr_list, + attr_count, ldap_attr, + false, name_list); +} + +errno_t sysdb_attrs_primary_fqdn_list(struct sss_domain_info *domain, + TALLOC_CTX *mem_ctx, + struct sysdb_attrs **attr_list, + size_t attr_count, + const char *ldap_attr, + char ***name_list) +{ + return _sysdb_attrs_primary_name_list(domain, mem_ctx, attr_list, + attr_count, ldap_attr, + true, name_list); +} + errno_t sysdb_msg2attrs(TALLOC_CTX *mem_ctx, size_t count, struct ldb_message **msgs, struct sysdb_attrs ***attrs) |