X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fsets.c;h=9d01b9c6717f7bd527531b9b4bc4c7fe8af210e7;hb=919274432b0603c7726ca398ad9e11bb08c1a0e2;hp=c2b4c257f3234bd3eb73247d667f9cec3be0a7b0;hpb=ac1332cdb868b6a30f545796aca8e0bbf13fe939;p=openldap diff --git a/servers/slapd/sets.c b/servers/slapd/sets.c index c2b4c257f3..9d01b9c671 100644 --- a/servers/slapd/sets.c +++ b/servers/slapd/sets.c @@ -119,9 +119,12 @@ set_chase (SLAP_SET_GATHER gatherer, { BerVarray vals, nset; char attrstr[32]; - struct berval bv = {attr->bv_len, attrstr}; + struct berval bv; int i; + bv.bv_len = attr->bv_len; + bv.bv_val = attrstr; + if (set == NULL) return(ch_calloc(1, sizeof(struct berval))); @@ -141,7 +144,7 @@ set_chase (SLAP_SET_GATHER gatherer, return(NULL); } for (i = 0; set[i].bv_val; i++) { - vals = (gatherer)(cookie, set[i].bv_val, &bv); + vals = (gatherer)(cookie, &set[i], &bv); if (vals != NULL) nset = set_join(nset, '|', vals); } @@ -149,7 +152,7 @@ set_chase (SLAP_SET_GATHER gatherer, if (closure) { for (i = 0; nset[i].bv_val; i++) { - vals = (gatherer)(cookie, nset[i].bv_val, &bv); + vals = (gatherer)(cookie, &nset[i], &bv); if (vals != NULL) { nset = set_join(nset, '|', vals); if (nset == NULL) @@ -194,7 +197,7 @@ set_samedn (char *dn1, char *dn2) int slap_set_filter (SLAP_SET_GATHER gatherer, void *cookie, struct berval *fbv, - char *user, char *this, BerVarray *results) + struct berval *user, struct berval *this, BerVarray *results) { #define IS_SET(x) ( (long)(x) >= 256 ) #define IS_OP(x) ( (long)(x) < 256 ) @@ -331,7 +334,7 @@ slap_set_filter (SLAP_SET_GATHER gatherer, set = ch_calloc(2, sizeof(struct berval)); if (set == NULL) SF_ERROR(memory); - ber_str2bv( this, 0, 1, set ); + ber_dupbv( set, this ); if (set->bv_val == NULL) SF_ERROR(memory); } else if (len == 4 @@ -342,7 +345,7 @@ slap_set_filter (SLAP_SET_GATHER gatherer, set = ch_calloc(2, sizeof(struct berval)); if (set == NULL) SF_ERROR(memory); - ber_str2bv( user, 0, 1, set ); + ber_dupbv( set, user ); if (set->bv_val == NULL) SF_ERROR(memory); } else if (SF_TOP() != (void *)'/') {