Skip to content
Snippets Groups Projects
Commit dda85faf authored by Jong Hyuk Choi's avatar Jong Hyuk Choi
Browse files

rework of slap_mods2entry dup

parent c7d4f284
No related branches found
No related tags found
No related merge requests found
......@@ -422,24 +422,32 @@ slap_mods2entry(
/* should check for duplicates */
AC_MEMCPY( &attr->a_vals[i], mods->sml_values,
sizeof( struct berval ) * j );
/* trim the mods array */
ch_free( mods->sml_values );
mods->sml_values = NULL;
if ( dup ) {
for ( j = 0; mods->sml_values[j].bv_val; j++ ) {
ber_dupbv( &attr->a_vals[i+j], &mods->sml_values[j] );
}
BER_BVZERO( &attr->a_vals[i+j] );
} else {
AC_MEMCPY( &attr->a_vals[i], mods->sml_values,
sizeof( struct berval ) * j );
ch_free( mods->sml_values );
mods->sml_values = NULL;
}
if( mods->sml_nvalues ) {
attr->a_nvals = ch_realloc( attr->a_nvals,
sizeof( struct berval ) * (i+j) );
AC_MEMCPY( &attr->a_nvals[i], mods->sml_nvalues,
sizeof( struct berval ) * j );
/* trim the mods array */
ch_free( mods->sml_nvalues );
mods->sml_nvalues = NULL;
if ( dup ) {
for ( j = 0; mods->sml_nvalues[j].bv_val; j++ ) {
ber_dupbv( &attr->a_nvals[i+j], &mods->sml_nvalues[j] );
}
BER_BVZERO( &attr->a_nvals[i+j] );
} else {
AC_MEMCPY( &attr->a_nvals[i], mods->sml_nvalues,
sizeof( struct berval ) * j );
ch_free( mods->sml_nvalues );
mods->sml_nvalues = NULL;
}
} else {
attr->a_nvals = attr->a_vals;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment