diff options
author | Volker Lendecke <vlendec@samba.org> | 2006-11-21 21:18:53 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:16:00 -0500 |
commit | 334c868b83f84130907dd2c9ed58cfeb6b9bb41c (patch) | |
tree | 7c4fc5c8ce3b196b7fe2c8142dc288b7e295eb95 /source3/utils | |
parent | 807c50858f5615218cce990cf20a884ccd8c95c1 (diff) | |
download | samba-334c868b83f84130907dd2c9ed58cfeb6b9bb41c.tar.gz samba-334c868b83f84130907dd2c9ed58cfeb6b9bb41c.tar.bz2 samba-334c868b83f84130907dd2c9ed58cfeb6b9bb41c.zip |
r19827: Move registry_push/pull_value to lib/util_reg.c
(This used to be commit 3047a4b92c7d5391a8f162f26ccc92ce30c35cee)
Diffstat (limited to 'source3/utils')
-rw-r--r-- | source3/utils/net_rpc_registry.c | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/source3/utils/net_rpc_registry.c b/source3/utils/net_rpc_registry.c index 8bdea0ffd4..49149db19e 100644 --- a/source3/utils/net_rpc_registry.c +++ b/source3/utils/net_rpc_registry.c @@ -208,121 +208,6 @@ static NTSTATUS registry_enumkeys(TALLOC_CTX *ctx, return status; } -static NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, - struct registry_value **pvalue, - enum winreg_Type type, uint8 *data, - uint32 size, uint32 length) -{ - struct registry_value *value; - NTSTATUS status; - - if (!(value = TALLOC_ZERO_P(mem_ctx, struct registry_value))) { - return NT_STATUS_NO_MEMORY; - } - - value->type = type; - - switch (type) { - case REG_DWORD: - if ((size != 4) || (length != 4)) { - status = NT_STATUS_INVALID_PARAMETER; - goto error; - } - value->v.dword = IVAL(data, 0); - break; - case REG_SZ: - case REG_EXPAND_SZ: - { - /* - * Make sure we get a NULL terminated string for - * convert_string_talloc(). - */ - - smb_ucs2_t *tmp; - uint32 num_ucs2 = length / 2; - - if ((length % 2) != 0) { - status = NT_STATUS_INVALID_PARAMETER; - goto error; - } - - if (!(tmp = SMB_MALLOC_ARRAY(smb_ucs2_t, num_ucs2+1))) { - status = NT_STATUS_NO_MEMORY; - goto error; - } - - memcpy((void *)tmp, (const void *)data, length); - tmp[num_ucs2] = 0; - - value->v.sz.len = convert_string_talloc( - value, CH_UTF16LE, CH_UNIX, tmp, length+2, - &value->v.sz.str, False); - - SAFE_FREE(tmp); - - if (value->v.sz.len == (size_t)-1) { - status = NT_STATUS_INVALID_PARAMETER; - goto error; - } - break; - } - case REG_MULTI_SZ: - status = reg_pull_multi_sz(value, (void *)data, length, - &value->v.multi_sz.num_strings, - &value->v.multi_sz.strings); - if (!(NT_STATUS_IS_OK(status))) { - goto error; - } - break; - case REG_BINARY: - value->v.binary.data = talloc_move(value, &data); - value->v.binary.length = length; - break; - default: - status = NT_STATUS_INVALID_PARAMETER; - goto error; - } - - *pvalue = value; - return NT_STATUS_OK; - - error: - TALLOC_FREE(value); - return status; -} - -static NTSTATUS registry_push_value(TALLOC_CTX *mem_ctx, - const struct registry_value *value, - DATA_BLOB *presult) -{ - switch (value->type) { - case REG_DWORD: { - char buf[4]; - SIVAL(buf, 0, value->v.dword); - *presult = data_blob_talloc(mem_ctx, (void *)buf, 4); - if (presult->data == NULL) { - return NT_STATUS_NO_MEMORY; - } - break; - } - case REG_SZ: - case REG_EXPAND_SZ: { - presult->length = 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), False); - if (presult->length == (size_t)-1) { - return NT_STATUS_NO_MEMORY; - } - break; - } - default: - return NT_STATUS_INVALID_PARAMETER; - } - - return NT_STATUS_OK; -} - static NTSTATUS registry_enumvalues(TALLOC_CTX *ctx, struct rpc_pipe_client *pipe_hnd, struct policy_handle *key_hnd, |