aboutsummaryrefslogtreecommitdiff
path: root/modules/ldap/ldap.c
diff options
context:
space:
mode:
Diffstat (limited to 'modules/ldap/ldap.c')
-rw-r--r--modules/ldap/ldap.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/modules/ldap/ldap.c b/modules/ldap/ldap.c
index b040820..d686f6b 100644
--- a/modules/ldap/ldap.c
+++ b/modules/ldap/ldap.c
@@ -901,25 +901,36 @@ getvar(const char *var, size_t len, void *data)
memcpy(p, values[0]->bv_val, values[0]->bv_len);
p[values[0]->bv_len] = 0;
} else {
- size_t i, len = 0, dlen = strlen(gd->joinstr);
+ size_t i, len, dlen = strlen(gd->joinstr);
char *q;
- for (i = 0; values[i]; i++)
+ len = values[0]->bv_len;
+ for (i = 1; values[i]; i++)
len += values[i]->bv_len + dlen;
+ smap_debug(dbgid, 2, ("%s: %lu", var, (unsigned long)i));
p = malloc(len + 1);
if (!p)
return NULL;
q = p;
for (i = 0; values[i]; i++) {
+ smap_debug(dbgid, 2,
+ ("%s: %lu=%*.*s", var,
+ (unsigned long)i,
+ (int)values[i]->bv_len,
+ (int)values[i]->bv_len,
+ values[i]->bv_val));
+ if (i) {
+ memcpy(q, gd->joinstr, dlen);
+ q += dlen;
+ }
memcpy(q, values[i]->bv_val,
values[i]->bv_len);
q += values[i]->bv_len;
- memcpy(q, gd->joinstr, dlen);
- q += dlen;
}
*q = 0;
}
- smap_debug(dbgid, 1, ("attr %*.*s=%s", (int)len, (int)len, var, p));
+ smap_debug(dbgid, 1, ("attr %*.*s=%s",
+ (int)len, (int)len, var, p));
ldap_value_free_len(values);
return p;
}

Return to:

Send suggestions and report system problems to the System administrator.