summaryrefslogtreecommitdiff
path: root/source4/lib/registry/rpc.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2008-01-07 14:11:29 -0600
committerStefan Metzmacher <metze@samba.org>2008-01-07 08:18:07 -0600
commit47f6bbf8cf5bdd03c72c59d00e3e1eab8895590e (patch)
treeffbfa1586fa70dd22422e8e697985af51ec75fd4 /source4/lib/registry/rpc.c
parent7f8276b06d5000d12c0d64167853a033b924af32 (diff)
downloadsamba-47f6bbf8cf5bdd03c72c59d00e3e1eab8895590e.tar.gz
samba-47f6bbf8cf5bdd03c72c59d00e3e1eab8895590e.tar.bz2
samba-47f6bbf8cf5bdd03c72c59d00e3e1eab8895590e.zip
r26689: registry: Return max_subkeynamelen, max_valnamelen and max_valbufsize in getkeyinfo().
(This used to be commit b06896d2378e536f5044dbe500a5232a89d6d0b5)
Diffstat (limited to 'source4/lib/registry/rpc.c')
-rw-r--r--source4/lib/registry/rpc.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/source4/lib/registry/rpc.c b/source4/lib/registry/rpc.c
index 2a6cabc3b8..18b7607713 100644
--- a/source4/lib/registry/rpc.c
+++ b/source4/lib/registry/rpc.c
@@ -29,6 +29,7 @@ struct rpc_key {
uint32_t num_subkeys;
uint32_t max_valnamelen;
uint32_t max_valdatalen;
+ uint32_t max_subkeynamelen;
};
struct rpc_registry_context {
@@ -202,7 +203,7 @@ static WERROR rpc_get_value_by_index(TALLOC_CTX *mem_ctx,
}
name.length = 0;
- name.size = mykeydata->max_valnamelen * 2+1;
+ name.size = mykeydata->max_valnamelen * 2;
name.name = NULL;
r.in.handle = &mykeydata->pol;
@@ -213,6 +214,7 @@ static WERROR rpc_get_value_by_index(TALLOC_CTX *mem_ctx,
r.in.length = &zero;
r.in.size = &mykeydata->max_valdatalen;
r.out.name = &name;
+ r.out.type = type;
status = dcerpc_winreg_EnumValue(mykeydata->pipe, mem_ctx, &r);
if(NT_STATUS_IS_ERR(status)) {
@@ -313,18 +315,17 @@ static WERROR rpc_query_key(const struct registry_key *k)
struct rpc_key *mykeydata = talloc_get_type(k, struct rpc_key);
TALLOC_CTX *mem_ctx = talloc_init("query_key");
uint32_t max_subkeysize;
- uint32_t num_values;
uint32_t secdescsize;
NTTIME last_changed_time;
ZERO_STRUCT(r.out);
r.out.num_subkeys = &mykeydata->num_subkeys;
- r.out.max_subkeylen = &mykeydata->num_values;
+ r.out.max_subkeylen = &mykeydata->max_subkeynamelen;
r.out.max_valnamelen = &mykeydata->max_valnamelen;
r.out.max_valbufsize = &mykeydata->max_valdatalen;
r.out.max_subkeysize = &max_subkeysize;
- r.out.num_values = &num_values;
+ r.out.num_values = &mykeydata->num_values;
r.out.secdescsize = &secdescsize;
r.out.last_changed_time = &last_changed_time;
@@ -367,7 +368,10 @@ static WERROR rpc_get_info(TALLOC_CTX *mem_ctx, const struct registry_key *key,
const char **classname,
uint32_t *numsubkeys,
uint32_t *numvalue,
- NTTIME *last_changed_time)
+ NTTIME *last_changed_time,
+ uint32_t *max_subkeynamelen,
+ uint32_t *max_valnamelen,
+ uint32_t *max_valbufsize)
{
struct rpc_key *mykeydata = talloc_get_type(key, struct rpc_key);
WERROR error;
@@ -386,6 +390,15 @@ static WERROR rpc_get_info(TALLOC_CTX *mem_ctx, const struct registry_key *key,
if (numsubkeys != NULL)
*numsubkeys = mykeydata->num_subkeys;
+ if (max_valnamelen != NULL)
+ *max_valnamelen = mykeydata->max_valnamelen;
+
+ if (max_valbufsize != NULL)
+ *max_valbufsize = mykeydata->max_valdatalen;
+
+ if (max_subkeynamelen != NULL)
+ *max_subkeynamelen = mykeydata->max_subkeynamelen;
+
return WERR_OK;
}