Author: obnox Date: 2007-09-07 14:41:49 +0000 (Fri, 07 Sep 2007) New Revision: 24998
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=24998 Log: Add a function regval_compose() to compose a REGISTRY_VALUE from input data. Use this function in a first step to refactor the canonicalization code of smbconf_store_values(). Michael Modified: branches/SAMBA_3_2/source/registry/reg_objects.c branches/SAMBA_3_2/source/registry/reg_smbconf.c branches/SAMBA_3_2_0/source/registry/reg_objects.c branches/SAMBA_3_2_0/source/registry/reg_smbconf.c Changeset: Modified: branches/SAMBA_3_2/source/registry/reg_objects.c =================================================================== --- branches/SAMBA_3_2/source/registry/reg_objects.c 2007-09-07 14:25:03 UTC (rev 24997) +++ branches/SAMBA_3_2/source/registry/reg_objects.c 2007-09-07 14:41:49 UTC (rev 24998) @@ -270,7 +270,37 @@ return False; } + /*********************************************************************** + * compose a REGISTRY_VALUE from input data + **********************************************************************/ + +REGISTRY_VALUE *regval_compose(TALLOC_CTX *ctx, const char *name, uint16 type, + const char *data_p, size_t size) +{ + REGISTRY_VALUE *regval = TALLOC_P(ctx, REGISTRY_VALUE); + + if (regval == NULL) { + return NULL; + } + + fstrcpy(regval->valuename, name); + regval->type = type; + if (size) { + regval->data_p = (uint8 *)TALLOC_MEMDUP(regval, data_p, size); + if (!regval->data_p) { + TALLOC_FREE(regval); + return NULL; + } + } else { + regval->data_p = NULL; + } + regval->size = size; + + return regval; +} + +/*********************************************************************** Add a new registry value to the array **********************************************************************/ Modified: branches/SAMBA_3_2/source/registry/reg_smbconf.c =================================================================== --- branches/SAMBA_3_2/source/registry/reg_smbconf.c 2007-09-07 14:25:03 UTC (rev 24997) +++ branches/SAMBA_3_2/source/registry/reg_smbconf.c 2007-09-07 14:41:49 UTC (rev 24998) @@ -167,10 +167,18 @@ DEBUG(10, ("adding canonicalized parameter to " "container.\n")); - res = regval_ctr_addvalue(new_val_ctr, canon_valname, - value->type, - (char *)value_data.data, - value_data.length); + + theval = regval_compose(mem_ctx, canon_valname, + value->type, + (char *)value_data.data, + value_data.length); + if (theval == NULL) { + DEBUG(10, ("error composing registry value. " + "(no memory?)\n")); + TALLOC_FREE(mem_ctx); + return False; + } + res = regval_ctr_copyvalue(new_val_ctr, theval); if (res == 0) { DEBUG(10, ("error calling regval_ctr_addvalue. " "(no memory?)\n")); Modified: branches/SAMBA_3_2_0/source/registry/reg_objects.c =================================================================== --- branches/SAMBA_3_2_0/source/registry/reg_objects.c 2007-09-07 14:25:03 UTC (rev 24997) +++ branches/SAMBA_3_2_0/source/registry/reg_objects.c 2007-09-07 14:41:49 UTC (rev 24998) @@ -270,7 +270,37 @@ return False; } + /*********************************************************************** + * compose a REGISTRY_VALUE from input data + **********************************************************************/ + +REGISTRY_VALUE *regval_compose(TALLOC_CTX *ctx, const char *name, uint16 type, + const char *data_p, size_t size) +{ + REGISTRY_VALUE *regval = TALLOC_P(ctx, REGISTRY_VALUE); + + if (regval == NULL) { + return NULL; + } + + fstrcpy(regval->valuename, name); + regval->type = type; + if (size) { + regval->data_p = (uint8 *)TALLOC_MEMDUP(regval, data_p, size); + if (!regval->data_p) { + TALLOC_FREE(regval); + return NULL; + } + } else { + regval->data_p = NULL; + } + regval->size = size; + + return regval; +} + +/*********************************************************************** Add a new registry value to the array **********************************************************************/ Modified: branches/SAMBA_3_2_0/source/registry/reg_smbconf.c =================================================================== --- branches/SAMBA_3_2_0/source/registry/reg_smbconf.c 2007-09-07 14:25:03 UTC (rev 24997) +++ branches/SAMBA_3_2_0/source/registry/reg_smbconf.c 2007-09-07 14:41:49 UTC (rev 24998) @@ -167,10 +167,18 @@ DEBUG(10, ("adding canonicalized parameter to " "container.\n")); - res = regval_ctr_addvalue(new_val_ctr, canon_valname, - value->type, - (char *)value_data.data, - value_data.length); + + theval = regval_compose(mem_ctx, canon_valname, + value->type, + (char *)value_data.data, + value_data.length); + if (theval == NULL) { + DEBUG(10, ("error composing registry value. " + "(no memory?)\n")); + TALLOC_FREE(mem_ctx); + return False; + } + res = regval_ctr_copyvalue(new_val_ctr, theval); if (res == 0) { DEBUG(10, ("error calling regval_ctr_addvalue. " "(no memory?)\n"));