mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-24 00:29:35 -05:00
make sure a_nvals are as many as a_vals (helps tracking other issues...)
This commit is contained in:
parent
ac1488b50d
commit
c33124e698
1 changed files with 9 additions and 5 deletions
|
|
@ -111,7 +111,7 @@ attr_dup( Attribute *a )
|
|||
tmp = attr_alloc( a->a_desc );
|
||||
|
||||
if ( a->a_vals != NULL ) {
|
||||
int i;
|
||||
int i;
|
||||
|
||||
for ( i = 0; !BER_BVISNULL( &a->a_vals[i] ); i++ ) {
|
||||
/* EMPTY */ ;
|
||||
|
|
@ -129,13 +129,17 @@ attr_dup( Attribute *a )
|
|||
assert( a->a_nvals != NULL );
|
||||
|
||||
if ( a->a_nvals != a->a_vals ) {
|
||||
int j;
|
||||
|
||||
tmp->a_nvals = ch_malloc( (i + 1) * sizeof(struct berval) );
|
||||
for ( i = 0; !BER_BVISNULL( &a->a_nvals[i] ); i++ ) {
|
||||
ber_dupbv( &tmp->a_nvals[i], &a->a_nvals[i] );
|
||||
if ( BER_BVISNULL( &tmp->a_nvals[i] ) ) break;
|
||||
for ( j = 0; !BER_BVISNULL( &a->a_nvals[j] ); j++ ) {
|
||||
assert( j < i );
|
||||
ber_dupbv( &tmp->a_nvals[j], &a->a_nvals[j] );
|
||||
if ( BER_BVISNULL( &tmp->a_nvals[j] ) ) break;
|
||||
/* FIXME: error? */
|
||||
}
|
||||
BER_BVZERO( &tmp->a_nvals[i] );
|
||||
assert( j == i );
|
||||
BER_BVZERO( &tmp->a_nvals[j] );
|
||||
|
||||
} else {
|
||||
tmp->a_nvals = tmp->a_vals;
|
||||
|
|
|
|||
Loading…
Reference in a new issue