diff options
-rw-r--r-- | source3/lib/util_reg_api.c | 62 |
1 files changed, 3 insertions, 59 deletions
diff --git a/source3/lib/util_reg_api.c b/source3/lib/util_reg_api.c index 503db774fc..309fa62762 100644 --- a/source3/lib/util_reg_api.c +++ b/source3/lib/util_reg_api.c @@ -155,74 +155,18 @@ WERROR registry_push_value(TALLOC_CTX *mem_ctx, } case REG_SZ: case REG_EXPAND_SZ: { - if (!convert_string_talloc(mem_ctx, CH_UNIX, CH_UTF16LE, - value->v.sz.str, - MIN(value->v.sz.len, - strlen(value->v.sz.str)+1), - (void *)&(presult->data), - &presult->length, False)) + if (!push_reg_sz(mem_ctx, presult, value->v.sz.str)) { return WERR_NOMEM; } break; } - case REG_MULTI_SZ: { - uint32_t count; - size_t len = 0; - char **strings; - size_t *string_lengths; - uint32_t ofs; - TALLOC_CTX *tmp_ctx = talloc_stackframe(); - - strings = TALLOC_ARRAY(tmp_ctx, char *, - value->v.multi_sz.num_strings); - if (strings == NULL) { - return WERR_NOMEM; - } - - string_lengths = TALLOC_ARRAY(tmp_ctx, size_t, - value->v.multi_sz.num_strings); - if (string_lengths == NULL) { - TALLOC_FREE(tmp_ctx); - return WERR_NOMEM; - } - - /* convert the single strings */ - for (count = 0; count < value->v.multi_sz.num_strings; count++) + case REG_MULTI_SZ: + if (!push_reg_multi_sz(mem_ctx, presult, (const char **)value->v.multi_sz.strings)) { - if (!convert_string_talloc(strings, CH_UNIX, - CH_UTF16LE, value->v.multi_sz.strings[count], - strlen(value->v.multi_sz.strings[count])+1, - (void *)&strings[count], - &string_lengths[count], false)) - { - - TALLOC_FREE(tmp_ctx); - return WERR_NOMEM; - } - len += string_lengths[count]; - } - - /* now concatenate all into the data blob */ - presult->data = TALLOC_ARRAY(mem_ctx, uint8_t, len); - if (presult->data == NULL) { - TALLOC_FREE(tmp_ctx); return WERR_NOMEM; } - for (count = 0, ofs = 0; - count < value->v.multi_sz.num_strings; - count++) - { - memcpy(presult->data + ofs, strings[count], - string_lengths[count]); - ofs += string_lengths[count]; - } - presult->length = len; - - TALLOC_FREE(tmp_ctx); - break; - } case REG_BINARY: *presult = data_blob_talloc(mem_ctx, value->v.binary.data, |