From cc7bc29757c0ea6739e06b96775c7c2b9a57f8ce Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Fri, 7 Sep 2007 14:41:49 +0000 Subject: r24998: 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 (This used to be commit f4caa2d7d412e2b9bb2a1ce71514551569ccf373) --- source3/registry/reg_objects.c | 30 ++++++++++++++++++++++++++++++ source3/registry/reg_smbconf.c | 16 ++++++++++++---- 2 files changed, 42 insertions(+), 4 deletions(-) (limited to 'source3/registry') diff --git a/source3/registry/reg_objects.c b/source3/registry/reg_objects.c index f759a921d2..ba37b9014b 100644 --- a/source3/registry/reg_objects.c +++ b/source3/registry/reg_objects.c @@ -270,6 +270,36 @@ BOOL regval_ctr_key_exists( REGVAL_CTR *ctr, const char *value ) 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 **********************************************************************/ diff --git a/source3/registry/reg_smbconf.c b/source3/registry/reg_smbconf.c index e2c7e7ea08..f2a8b6ee8b 100644 --- a/source3/registry/reg_smbconf.c +++ b/source3/registry/reg_smbconf.c @@ -167,10 +167,18 @@ static BOOL smbconf_store_values( const char *key, REGVAL_CTR *val ) 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")); -- cgit