From 450740f6d60f5919b421f65b873828761e366e67 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Mon, 8 Sep 2014 15:57:09 +0300 Subject: ldap: bugfix * modules/ldap/ldap.c (getvar): Don't add extra delimiter at the end of output. --- modules/ldap/ldap.c | 21 ++++++++++++++++----- 1 file 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; } -- cgit v1.2.1