mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
r25139: Avoid code duplication: let regval_ctr_copyvalue() call regval_ctr_addvalue().
This also corrects regval_ctr_copyvalue() in that it cannot create (invalid) regval containers with dupliacte entries... Michael
This commit is contained in:
parent
39c211a702
commit
2daaaaa835
@ -347,43 +347,8 @@ int regval_ctr_addvalue( REGVAL_CTR *ctr, const char *name, uint16 type,
|
||||
int regval_ctr_copyvalue( REGVAL_CTR *ctr, REGISTRY_VALUE *val )
|
||||
{
|
||||
if ( val ) {
|
||||
/* allocate a slot in the array of pointers */
|
||||
|
||||
if ( ctr->num_values == 0 ) {
|
||||
ctr->values = TALLOC_P( ctr, REGISTRY_VALUE *);
|
||||
} else {
|
||||
ctr->values = TALLOC_REALLOC_ARRAY( ctr, ctr->values, REGISTRY_VALUE *, ctr->num_values+1 );
|
||||
}
|
||||
|
||||
if (!ctr->values) {
|
||||
ctr->num_values = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* allocate a new value and store the pointer in the arrya */
|
||||
|
||||
ctr->values[ctr->num_values] = TALLOC_P( ctr, REGISTRY_VALUE);
|
||||
if (!ctr->values[ctr->num_values]) {
|
||||
ctr->num_values = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* init the value */
|
||||
|
||||
fstrcpy( ctr->values[ctr->num_values]->valuename, val->valuename );
|
||||
ctr->values[ctr->num_values]->type = val->type;
|
||||
if (val->size) {
|
||||
ctr->values[ctr->num_values]->data_p = (uint8 *)TALLOC_MEMDUP(
|
||||
ctr, val->data_p, val->size );
|
||||
if (!ctr->values[ctr->num_values]->data_p) {
|
||||
ctr->num_values = 0;
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
ctr->values[ctr->num_values]->data_p = NULL;
|
||||
}
|
||||
ctr->values[ctr->num_values]->size = val->size;
|
||||
ctr->num_values++;
|
||||
regval_ctr_addvalue(ctr, val->valuename, val->type,
|
||||
(char *)val->data_p, val->size);
|
||||
}
|
||||
|
||||
return ctr->num_values;
|
||||
|
Loading…
Reference in New Issue
Block a user