From 1b4401ff5376495af295025fdd17562733e4a674 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Tue, 4 Feb 2003 22:33:51 +0000 Subject: [PATCH] handle attr delete appropriately (pass test004) --- servers/slapd/slapi/slapi_utils.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/servers/slapd/slapi/slapi_utils.c b/servers/slapd/slapi/slapi_utils.c index fc38e6e587..a89cf6db89 100644 --- a/servers/slapd/slapi/slapi_utils.c +++ b/servers/slapd/slapi/slapi_utils.c @@ -3127,21 +3127,25 @@ Modifications *slapi_x_ldapmods2modifications (LDAPMod **mods) ; } - mod->sml_bvalues = (BerVarray) ch_malloc( (i + 1) * sizeof(struct berval) ); - - /* 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; - } + if ( i == 0 ) { + mod->sml_bvalues = NULL; } 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 = (BerVarray) ch_malloc( (i + 1) * sizeof(struct berval) ); + + /* 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->sml_next;