From ecf90c495eb850cd6f376fb4e090640b69f0c029 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 1 Dec 2006 20:01:09 +0000 Subject: r19991: Sorry for this 2000-liner... The main thing here is a rewrite of srv_winreg_nt.c. The core functionality has moved to registry/reg_api.c which is then usable by the rest of Samba as well. On that way it fixes creating keys with more than one element in the path. This did not work before. Two things that sneaked in (sorry :-) is the change of some routines from NTSTATUS to WERROR the removed "parent" argument to regkey_open_internal. Volker (This used to be commit fea52801de8c7b85c578d200c599475680c5339f) --- source3/lib/util_reg.c | 60 +++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 30 deletions(-) (limited to 'source3/lib/util_reg.c') diff --git a/source3/lib/util_reg.c b/source3/lib/util_reg.c index 7d6dbe6d00..9f9cd40331 100644 --- a/source3/lib/util_reg.c +++ b/source3/lib/util_reg.c @@ -68,8 +68,8 @@ const char *reg_type_lookup(enum winreg_Type type) return result; } -NTSTATUS reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, - uint32 *num_values, char ***values) +WERROR reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, + uint32 *num_values, char ***values) { const smb_ucs2_t *p = (const smb_ucs2_t *)buf; *num_values = 0; @@ -79,7 +79,7 @@ NTSTATUS reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, */ if (!(*values = TALLOC_ARRAY(mem_ctx, char *, 1))) { - return NT_STATUS_NO_MEMORY; + return WERR_NOMEM; } len /= 2; /* buf is a set of UCS2 strings */ @@ -94,31 +94,31 @@ NTSTATUS reg_pull_multi_sz(TALLOC_CTX *mem_ctx, const void *buf, size_t len, True); if (dstlen == (size_t)-1) { TALLOC_FREE(*values); - return NT_STATUS_NO_MEMORY; + return WERR_NOMEM; } ADD_TO_ARRAY(*values, char *, val, values, num_values); if (*values == NULL) { - return NT_STATUS_NO_MEMORY; + return WERR_NOMEM; } p += thislen; len -= thislen; } - return NT_STATUS_OK; + return WERR_OK; } -NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, - struct registry_value **pvalue, - enum winreg_Type type, uint8 *data, - uint32 size, uint32 length) +WERROR 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; + WERROR err; if (!(value = TALLOC_ZERO_P(mem_ctx, struct registry_value))) { - return NT_STATUS_NO_MEMORY; + return WERR_NOMEM; } value->type = type; @@ -126,7 +126,7 @@ NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, switch (type) { case REG_DWORD: if ((size != 4) || (length != 4)) { - status = NT_STATUS_INVALID_PARAMETER; + err = WERR_INVALID_PARAM; goto error; } value->v.dword = IVAL(data, 0); @@ -143,12 +143,12 @@ NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, uint32 num_ucs2 = length / 2; if ((length % 2) != 0) { - status = NT_STATUS_INVALID_PARAMETER; + err = WERR_INVALID_PARAM; goto error; } if (!(tmp = SMB_MALLOC_ARRAY(smb_ucs2_t, num_ucs2+1))) { - status = NT_STATUS_NO_MEMORY; + err = WERR_NOMEM; goto error; } @@ -162,16 +162,16 @@ NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, SAFE_FREE(tmp); if (value->v.sz.len == (size_t)-1) { - status = NT_STATUS_INVALID_PARAMETER; + err = WERR_INVALID_PARAM; 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))) { + 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))) { goto error; } break; @@ -180,21 +180,21 @@ NTSTATUS registry_pull_value(TALLOC_CTX *mem_ctx, value->v.binary.length = length; break; default: - status = NT_STATUS_INVALID_PARAMETER; + err = WERR_INVALID_PARAM; goto error; } *pvalue = value; - return NT_STATUS_OK; + return WERR_OK; error: TALLOC_FREE(value); - return status; + return err; } -NTSTATUS registry_push_value(TALLOC_CTX *mem_ctx, - const struct registry_value *value, - DATA_BLOB *presult) +WERROR registry_push_value(TALLOC_CTX *mem_ctx, + const struct registry_value *value, + DATA_BLOB *presult) { switch (value->type) { case REG_DWORD: { @@ -202,7 +202,7 @@ NTSTATUS registry_push_value(TALLOC_CTX *mem_ctx, SIVAL(buf, 0, value->v.dword); *presult = data_blob_talloc(mem_ctx, (void *)buf, 4); if (presult->data == NULL) { - return NT_STATUS_NO_MEMORY; + return WERR_NOMEM; } break; } @@ -213,13 +213,13 @@ NTSTATUS registry_push_value(TALLOC_CTX *mem_ctx, 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; + return WERR_NOMEM; } break; } default: - return NT_STATUS_INVALID_PARAMETER; + return WERR_INVALID_PARAM; } - return NT_STATUS_OK; + return WERR_OK; } -- cgit