Hi, Stephen found that currently we only write the first value of a multi-valued attribute to the cache. This patch should fix it.
bye, Sumit
From 9cc9b94b4cf75c6c4c8c5cc5002b3971d5ad7ca4 Mon Sep 17 00:00:00 2001 From: Sumit Bose <sb...@redhat.com> Date: Tue, 21 Dec 2010 11:39:03 +0100 Subject: [PATCH] Add all values of a multi-valued user attribute --- src/providers/ldap/sdap_async_accounts.c | 27 +++++++++++++++------------ 1 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/providers/ldap/sdap_async_accounts.c b/src/providers/ldap/sdap_async_accounts.c index 004c69a..289b637 100644 --- a/src/providers/ldap/sdap_async_accounts.c +++ b/src/providers/ldap/sdap_async_accounts.c @@ -51,6 +51,7 @@ static int sdap_save_user(TALLOC_CTX *memctx, char *val = NULL; int cache_timeout; char *usn_value = NULL; + size_t c; DEBUG(9, ("Save user\n")); @@ -235,18 +236,20 @@ static int sdap_save_user(TALLOC_CTX *memctx, goto fail; } if (el->num_values > 0) { - DEBUG(9, ("Adding [%s]=[%s] to user attributes.\n", - opts->user_map[i].sys_name, - (const char*) el->values[0].data)); - val = talloc_strdup(user_attrs, (const char*) el->values[0].data); - if (val == NULL) { - ret = ENOMEM; - goto fail; - } - ret = sysdb_attrs_add_string(user_attrs, - opts->user_map[i].sys_name, val); - if (ret) { - goto fail; + for (c = 0; c < el->num_values; c++) { + DEBUG(9, ("Adding [%s]=[%s] to user attributes.\n", + opts->user_map[i].sys_name, + (const char*) el->values[c].data)); + val = talloc_strdup(user_attrs, (const char*) el->values[c].data); + if (val == NULL) { + ret = ENOMEM; + goto fail; + } + ret = sysdb_attrs_add_string(user_attrs, + opts->user_map[i].sys_name, val); + if (ret) { + goto fail; + } } } } -- 1.7.3.2
_______________________________________________ sssd-devel mailing list sssd-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/sssd-devel