diff options
-rw-r--r-- | source3/include/proto.h | 2 | ||||
-rw-r--r-- | source3/lib/util_reg.c | 23 | ||||
-rw-r--r-- | source3/lib/util_reg_api.c | 23 |
3 files changed, 18 insertions, 30 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index 8951e73e13..6b68f954e4 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -1261,8 +1261,6 @@ struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ; /* The following definitions come from lib/util_reg.c */ const char *reg_type_lookup(enum winreg_Type type); -WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, - uint32 *num_values, char ***values); bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s); bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a); bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s); diff --git a/source3/lib/util_reg.c b/source3/lib/util_reg.c index ca46f86f69..850dbfae66 100644 --- a/source3/lib/util_reg.c +++ b/source3/lib/util_reg.c @@ -73,29 +73,6 @@ const char *reg_type_lookup(enum winreg_Type type) return result; } -WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, - uint32 *num_values, char ***values) -{ - DATA_BLOB blob; - const char **vals; - int i; - - blob = data_blob_const((uint8_t *)buf, len); - - if (!pull_reg_multi_sz(mem_ctx, &blob, &vals)) { - return WERR_NOMEM; - } - - for (i=0; vals[i]; i++) { - ;; - } - - *num_values = i; - *values = (char **)vals; - - return WERR_OK; -} - /******************************************************************* push a string in unix charset into a REG_SZ UCS2 null terminated blob ********************************************************************/ diff --git a/source3/lib/util_reg_api.c b/source3/lib/util_reg_api.c index 56ecc5472d..503db774fc 100644 --- a/source3/lib/util_reg_api.c +++ b/source3/lib/util_reg_api.c @@ -102,14 +102,27 @@ WERROR registry_pull_value(TALLOC_CTX *mem_ctx, SAFE_FREE(tmp); break; } - case REG_MULTI_SZ: - err = reg_pull_multi_sz(value, (void *)data, length, - &value->v.multi_sz.num_strings, - &value->v.multi_sz.strings); - if (!(W_ERROR_IS_OK(err))) { + case REG_MULTI_SZ: { + int i; + const char **vals; + DATA_BLOB blob; + + blob = data_blob_const(data, length); + + if (!pull_reg_multi_sz(mem_ctx, &blob, &vals)) { + err = WERR_NOMEM; goto error; } + + for (i=0; vals[i]; i++) { + ;; + } + + value->v.multi_sz.num_strings = i; + value->v.multi_sz.strings = (char **)vals; + break; + } case REG_BINARY: value->v.binary = data_blob_talloc(mem_ctx, data, length); break; |