diff options
author | Günther Deschner <gd@samba.org> | 2010-04-09 16:47:45 +0200 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2010-04-09 18:33:45 +0200 |
commit | 63b111bd329fddaf0bfd64ca8255deecb1fd5352 (patch) | |
tree | 0a8973f5cd6e5169351d93c910a30c1edfa444e7 /source3/lib | |
parent | bfeab64ebf9481d98ffb182adb03bbd6e6ada462 (diff) | |
download | samba-63b111bd329fddaf0bfd64ca8255deecb1fd5352.tar.gz samba-63b111bd329fddaf0bfd64ca8255deecb1fd5352.tar.bz2 samba-63b111bd329fddaf0bfd64ca8255deecb1fd5352.zip |
s3: add iconv_convenience handle to pull/push sz helpers.
Guenther
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/util_reg.c | 20 | ||||
-rw-r--r-- | source3/lib/util_reg_api.c | 6 |
2 files changed, 15 insertions, 11 deletions
diff --git a/source3/lib/util_reg.c b/source3/lib/util_reg.c index 850dbfae66..c5528e41b5 100644 --- a/source3/lib/util_reg.c +++ b/source3/lib/util_reg.c @@ -77,12 +77,13 @@ const char *reg_type_lookup(enum winreg_Type type) push a string in unix charset into a REG_SZ UCS2 null terminated blob ********************************************************************/ -bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s) +bool push_reg_sz(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *ic, + DATA_BLOB *blob, const char *s) { union winreg_Data data; enum ndr_err_code ndr_err; data.string = s; - ndr_err = ndr_push_union_blob(blob, mem_ctx, NULL, &data, REG_SZ, + ndr_err = ndr_push_union_blob(blob, mem_ctx, ic, &data, REG_SZ, (ndr_push_flags_fn_t)ndr_push_winreg_Data); return NDR_ERR_CODE_IS_SUCCESS(ndr_err); } @@ -92,12 +93,13 @@ bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s) terminated blob ********************************************************************/ -bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a) +bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *ic, + DATA_BLOB *blob, const char **a) { union winreg_Data data; enum ndr_err_code ndr_err; data.string_array = a; - ndr_err = ndr_push_union_blob(blob, mem_ctx, NULL, &data, REG_MULTI_SZ, + ndr_err = ndr_push_union_blob(blob, mem_ctx, ic, &data, REG_MULTI_SZ, (ndr_push_flags_fn_t)ndr_push_winreg_Data); return NDR_ERR_CODE_IS_SUCCESS(ndr_err); } @@ -106,11 +108,12 @@ bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a) pull a string in unix charset out of a REG_SZ UCS2 null terminated blob ********************************************************************/ -bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s) +bool pull_reg_sz(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *ic, + const DATA_BLOB *blob, const char **s) { union winreg_Data data; enum ndr_err_code ndr_err; - ndr_err = ndr_pull_union_blob(blob, mem_ctx, NULL, &data, REG_SZ, + ndr_err = ndr_pull_union_blob(blob, mem_ctx, ic, &data, REG_SZ, (ndr_pull_flags_fn_t)ndr_pull_winreg_Data); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { return false; @@ -124,11 +127,12 @@ bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s) terminated blob ********************************************************************/ -bool pull_reg_multi_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char ***a) +bool pull_reg_multi_sz(TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *ic, + const DATA_BLOB *blob, const char ***a) { union winreg_Data data; enum ndr_err_code ndr_err; - ndr_err = ndr_pull_union_blob(blob, mem_ctx, NULL, &data, REG_MULTI_SZ, + ndr_err = ndr_pull_union_blob(blob, mem_ctx, ic, &data, REG_MULTI_SZ, (ndr_pull_flags_fn_t)ndr_pull_winreg_Data); if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) { return false; diff --git a/source3/lib/util_reg_api.c b/source3/lib/util_reg_api.c index 7150444cf6..65a74b845d 100644 --- a/source3/lib/util_reg_api.c +++ b/source3/lib/util_reg_api.c @@ -109,7 +109,7 @@ WERROR registry_pull_value(TALLOC_CTX *mem_ctx, blob = data_blob_const(data, length); - if (!pull_reg_multi_sz(mem_ctx, &blob, &vals)) { + if (!pull_reg_multi_sz(mem_ctx, NULL, &blob, &vals)) { err = WERR_NOMEM; goto error; } @@ -155,7 +155,7 @@ WERROR registry_push_value(TALLOC_CTX *mem_ctx, } case REG_SZ: case REG_EXPAND_SZ: { - if (!push_reg_sz(mem_ctx, presult, value->v.sz.str)) + if (!push_reg_sz(mem_ctx, NULL, presult, value->v.sz.str)) { return WERR_NOMEM; } @@ -177,7 +177,7 @@ WERROR registry_push_value(TALLOC_CTX *mem_ctx, } array[i] = NULL; - if (!push_reg_multi_sz(mem_ctx, presult, array)) { + if (!push_reg_multi_sz(mem_ctx, NULL, presult, array)) { talloc_free(array); return WERR_NOMEM; } |