r26432: Require ndr_pull users to specify iconv_convenience.
[ira/wip.git] / source4 / librpc / ndr / ndr.c
index f547bd3d0fcff53cc0e9ef33fdaba5ebb6b252b6..0dafda70860c5b47bc20b9ab3556baef8b4ac399 100644 (file)
@@ -57,7 +57,7 @@ _PUBLIC_ size_t ndr_align_size(uint32_t offset, size_t n)
 /*
   initialise a ndr parse structure from a data blob
 */
-_PUBLIC_ struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx)
+_PUBLIC_ struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *mem_ctx, struct smb_iconv_convenience *iconv_convenience)
 {
        struct ndr_pull *ndr;
 
@@ -67,7 +67,7 @@ _PUBLIC_ struct ndr_pull *ndr_pull_init_blob(const DATA_BLOB *blob, TALLOC_CTX *
 
        ndr->data = blob->data;
        ndr->data_size = blob->length;
-       ndr->iconv_convenience = talloc_reference(ndr, lp_iconv_convenience(global_loadparm));
+       ndr->iconv_convenience = talloc_reference(ndr, iconv_convenience);
 
        return ndr;
 }
@@ -694,7 +694,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_struct_blob(const DATA_BLOB *blob, TALLOC_CT
                              ndr_pull_flags_fn_t fn)
 {
        struct ndr_pull *ndr;
-       ndr = ndr_pull_init_blob(blob, mem_ctx);
+       ndr = ndr_pull_init_blob(blob, mem_ctx, lp_iconv_convenience(global_loadparm));
        NDR_ERR_HAVE_NO_MEMORY(ndr);
        NDR_CHECK(fn(ndr, NDR_SCALARS|NDR_BUFFERS, p));
        return NDR_ERR_SUCCESS;
@@ -707,7 +707,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_struct_blob_all(const DATA_BLOB *blob, TALLO
                                  ndr_pull_flags_fn_t fn)
 {
        struct ndr_pull *ndr;
-       ndr = ndr_pull_init_blob(blob, mem_ctx);
+       ndr = ndr_pull_init_blob(blob, mem_ctx, lp_iconv_convenience(global_loadparm));
        NDR_ERR_HAVE_NO_MEMORY(ndr);
        NDR_CHECK(fn(ndr, NDR_SCALARS|NDR_BUFFERS, p));
        if (ndr->offset < ndr->data_size) {
@@ -725,7 +725,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_union_blob(const DATA_BLOB *blob, TALLOC_CTX
                             uint32_t level, ndr_pull_flags_fn_t fn)
 {
        struct ndr_pull *ndr;
-       ndr = ndr_pull_init_blob(blob, mem_ctx);
+       ndr = ndr_pull_init_blob(blob, mem_ctx, lp_iconv_convenience(global_loadparm));
        NDR_ERR_HAVE_NO_MEMORY(ndr);
        NDR_CHECK(ndr_pull_set_switch_value(ndr, p, level));
        NDR_CHECK(fn(ndr, NDR_SCALARS|NDR_BUFFERS, p));
@@ -740,7 +740,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_union_blob_all(const DATA_BLOB *blob, TALLOC
                             uint32_t level, ndr_pull_flags_fn_t fn)
 {
        struct ndr_pull *ndr;
-       ndr = ndr_pull_init_blob(blob, mem_ctx);
+       ndr = ndr_pull_init_blob(blob, mem_ctx, lp_iconv_convenience(global_loadparm));
        NDR_ERR_HAVE_NO_MEMORY(ndr);
        NDR_CHECK(ndr_pull_set_switch_value(ndr, p, level));
        NDR_CHECK(fn(ndr, NDR_SCALARS|NDR_BUFFERS, p));