summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h2
-rw-r--r--source3/lib/util_reg.c23
-rw-r--r--source3/lib/util_reg_api.c23
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;