mod = (Modifications *)
ch_calloc( 1, sizeof(Modifications) );
+ /* copy the op */
+ mod->sml_op = ml->ml_op;
+
/* convert to attribute description */
rc = slap_str2ad( ml->ml_type, &mod->sml_desc, text );
* a rough single value check... an additional check is needed
* to catch add of single value to existing single valued attribute
*/
- if( ( ml->ml_op == LDAP_MOD_ADD || ml->ml_op == LDAP_MOD_REPLACE )
+ if( ( mod->sml_op == LDAP_MOD_ADD || mod->sml_op == LDAP_MOD_REPLACE )
&& nvals > 1 && is_at_single_value( ad->ad_type ))
{
slap_mods_free( mod );
mod = (Modifications *) ch_calloc( 1, sizeof( Modifications ) );
mod->sml_op = mop;
- mod->sml_desc = slap_schema.si_ad_modifiersName;
+ mod->sml_desc = ad_dup( slap_schema.si_ad_modifiersName );
mod->sml_bvalues = (struct berval **) malloc( 2 * sizeof( struct berval * ) );
mod->sml_bvalues[0] = ber_bvdup( &name );
mod->sml_bvalues[1] = NULL;
mod = (Modifications *) ch_calloc( 1, sizeof( Modifications ) );
mod->sml_op = mop;
- mod->sml_desc = slap_schema.si_ad_modifyTimestamp;
+ mod->sml_desc = ad_dup( slap_schema.si_ad_modifyTimestamp );
mod->sml_bvalues = (struct berval **) malloc( 2 * sizeof( struct berval * ) );
mod->sml_bvalues[0] = ber_bvdup( ×tamp );
mod->sml_bvalues[1] = NULL;