summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/providers/ldap/sdap_async_groups.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c
index d13863a1e..5edcd3af7 100644
--- a/src/providers/ldap/sdap_async_groups.c
+++ b/src/providers/ldap/sdap_async_groups.c
@@ -1566,16 +1566,26 @@ sdap_process_group_members_2307(struct sdap_process_group_state *state,
struct ldb_message_element *ghostel)
{
struct ldb_message *msg;
+ char *member_attr_val;
char *member_name;
char *userdn;
int ret;
int i;
for (i=0; i < memberel->num_values; i++) {
- member_name = (char *)memberel->values[i].data;
+ member_attr_val = (char *)memberel->values[i].data;
/* We need to skip over zero-length usernames */
- if (member_name[0] == '\0') continue;
+ if (member_attr_val[0] == '\0') continue;
+
+ /* RFC2307 stores members as plain usernames in the member attribute.
+ * Internally, we use fqdns in the cache..
+ */
+ member_name = sss_create_internal_fqname(state, member_attr_val,
+ state->dom->name);
+ if (member_name == NULL) {
+ return ENOMEM;
+ }
ret = sysdb_search_user_by_name(state, state->dom, member_name,
NULL, &msg);