handle attr delete appropriately (pass test004)

This commit is contained in:
Pierangelo Masarati 2003-02-04 22:33:51 +00:00
parent 677f13a846
commit 1b4401ff53

View File

@ -3127,21 +3127,25 @@ Modifications *slapi_x_ldapmods2modifications (LDAPMod **mods)
; ;
} }
mod->sml_bvalues = (BerVarray) ch_malloc( (i + 1) * sizeof(struct berval) ); if ( i == 0 ) {
mod->sml_bvalues = NULL;
/* NB: This implicitly trusts a plugin to return valid modifications. */
if ( (*modp)->mod_op & LDAP_MOD_BVALUES ) {
for( i = 0, bvp = (*modp)->mod_bvalues; bvp != NULL && *bvp != NULL; bvp++, i++ ) {
mod->sml_bvalues[i].bv_val = (*bvp)->bv_val;
mod->sml_bvalues[i].bv_len = (*bvp)->bv_len;
}
} else { } else {
for( i = 0, p = (*modp)->mod_values; p != NULL && *p != NULL; p++, i++ ) { mod->sml_bvalues = (BerVarray) ch_malloc( (i + 1) * sizeof(struct berval) );
mod->sml_bvalues[i].bv_val = *p;
mod->sml_bvalues[i].bv_len = strlen( *p ); /* NB: This implicitly trusts a plugin to return valid modifications. */
if ( (*modp)->mod_op & LDAP_MOD_BVALUES ) {
for( i = 0, bvp = (*modp)->mod_bvalues; bvp != NULL && *bvp != NULL; bvp++, i++ ) {
mod->sml_bvalues[i].bv_val = (*bvp)->bv_val;
mod->sml_bvalues[i].bv_len = (*bvp)->bv_len;
}
} else {
for( i = 0, p = (*modp)->mod_values; p != NULL && *p != NULL; p++, i++ ) {
mod->sml_bvalues[i].bv_val = *p;
mod->sml_bvalues[i].bv_len = strlen( *p );
}
} }
mod->sml_bvalues[i].bv_val = NULL;
} }
mod->sml_bvalues[i].bv_val = NULL;
*modtail = mod; *modtail = mod;
modtail = &mod->sml_next; modtail = &mod->sml_next;