svn commit: samba r26432 - in branches/SAMBA_4_0: . source/lib/messaging source/lib/samba3 source/libcli/raw source/librpc/ndr source/librpc/rpc source/librpc/tools source/ntvfs/ipc source/rpc_server source/torture/ndr source/torture/rap source/torture/rpc source/utils

jelmer at samba.org jelmer at samba.org
Thu Dec 13 22:46:28 GMT 2007


Author: jelmer
Date: 2007-12-13 22:46:27 +0000 (Thu, 13 Dec 2007)
New Revision: 26432

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=26432

Log:
Require ndr_pull users to specify iconv_convenience.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/messaging/messaging.c
   branches/SAMBA_4_0/source/lib/samba3/share_info.c
   branches/SAMBA_4_0/source/libcli/raw/rawacl.c
   branches/SAMBA_4_0/source/librpc/ndr/ndr.c
   branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
   branches/SAMBA_4_0/source/librpc/tools/ndrdump.c
   branches/SAMBA_4_0/source/ntvfs/ipc/ipc_rap.c
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
   branches/SAMBA_4_0/source/rpc_server/dcesrv_auth.c
   branches/SAMBA_4_0/source/torture/ndr/ndr.c
   branches/SAMBA_4_0/source/torture/rap/rap.c
   branches/SAMBA_4_0/source/torture/rpc/eventlog.c
   branches/SAMBA_4_0/source/utils/getntacl.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/messaging/messaging.c
===================================================================
--- branches/SAMBA_4_0/source/lib/messaging/messaging.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/lib/messaging/messaging.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -798,7 +798,7 @@
 
 	m->from = src;
 
-	m->ndr = ndr_pull_init_blob(packet, m);
+	m->ndr = ndr_pull_init_blob(packet, m, lp_iconv_convenience(global_loadparm));
 	if (m->ndr == NULL) goto failed;
 
 	m->ndr->flags |= LIBNDR_FLAG_REF_ALLOC;

Modified: branches/SAMBA_4_0/source/lib/samba3/share_info.c
===================================================================
--- branches/SAMBA_4_0/source/lib/samba3/share_info.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/lib/samba3/share_info.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -76,7 +76,7 @@
 		blob.data = (uint8_t *)vbuf.dptr;
 		blob.length = vbuf.dsize;
 
-		pull = ndr_pull_init_blob(&blob, ctx);
+		pull = ndr_pull_init_blob(&blob, ctx, lp_iconv_convenience(global_loadparm));
 
 		ndr_pull_security_descriptor(pull, NDR_SCALARS|NDR_BUFFERS, &share->secdesc);
 

Modified: branches/SAMBA_4_0/source/libcli/raw/rawacl.c
===================================================================
--- branches/SAMBA_4_0/source/libcli/raw/rawacl.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/libcli/raw/rawacl.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -77,7 +77,8 @@
 
 	nt.out.data.length = IVAL(nt.out.params.data, 0);
 
-	ndr = ndr_pull_init_blob(&nt.out.data, mem_ctx);
+	ndr = ndr_pull_init_blob(&nt.out.data, mem_ctx, 
+				 lp_iconv_convenience(global_loadparm));
 	if (!ndr) {
 		return NT_STATUS_INVALID_PARAMETER;
 	}

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -57,7 +57,7 @@
 /*
   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 @@
 
 	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 @@
 			      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 @@
 				  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 @@
 			     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 @@
 			     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));

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -121,7 +121,7 @@
 	r->out.count	= _r.out.count;\
 	r->out.result	= _r.out.result;\
 	if (_r.out.info) {\
-		struct ndr_pull *_ndr_info = ndr_pull_init_blob(_r.out.info, ndr);\
+		struct ndr_pull *_ndr_info = ndr_pull_init_blob(_r.out.info, ndr, ndr->iconv_convenience);\
 		NDR_ERR_HAVE_NO_MEMORY(_ndr_info);\
 		_ndr_info->flags= ndr->flags;\
 		if (r->in.offered != _ndr_info->data_size) {\
@@ -470,7 +470,7 @@
 		}
 		if (_r.out.data.length > 0 && r->out.needed <= _r.out.data.length) {
 			struct __spoolss_GetPrinterData __r;
-			struct ndr_pull *_ndr_data = ndr_pull_init_blob(&_r.out.data, ndr);
+			struct ndr_pull *_ndr_data = ndr_pull_init_blob(&_r.out.data, ndr, ndr->iconv_convenience);
 			NDR_ERR_HAVE_NO_MEMORY(_ndr_data);
 			_ndr_data->flags= ndr->flags;
 			__r.in.type	= r->out.type;

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -164,13 +164,13 @@
 }
 
 
-/*
+/**
   setup for a ndr pull, also setting up any flags from the binding string
 */
 static struct ndr_pull *ndr_pull_init_flags(struct dcerpc_connection *c, 
 					    DATA_BLOB *blob, TALLOC_CTX *mem_ctx)
 {
-	struct ndr_pull *ndr = ndr_pull_init_blob(blob, mem_ctx);
+	struct ndr_pull *ndr = ndr_pull_init_blob(blob, mem_ctx, lp_iconv_convenience(global_loadparm));
 
 	if (ndr == NULL) return ndr;
 

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -439,7 +439,7 @@
 NTSTATUS dcerpc_floor_get_lhs_data(struct epm_floor *epm_floor, struct ndr_syntax_id *syntax)
 {
 	TALLOC_CTX *mem_ctx = talloc_init("floor_get_lhs_data");
-	struct ndr_pull *ndr = ndr_pull_init_blob(&epm_floor->lhs.lhs_data, mem_ctx);
+	struct ndr_pull *ndr = ndr_pull_init_blob(&epm_floor->lhs.lhs_data, mem_ctx, lp_iconv_convenience(global_loadparm));
 	enum ndr_err_code ndr_err;
 	uint16_t if_version=0;
 

Modified: branches/SAMBA_4_0/source/librpc/tools/ndrdump.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/tools/ndrdump.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/librpc/tools/ndrdump.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -304,7 +304,7 @@
 		blob.data = data;
 		blob.length = size;
 
-		ndr_pull = ndr_pull_init_blob(&blob, mem_ctx);
+		ndr_pull = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(cmdline_lp_ctx));
 		ndr_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 
 		ndr_err = f->ndr_pull(ndr_pull, NDR_IN, st);
@@ -341,7 +341,7 @@
 	blob.data = data;
 	blob.length = size;
 
-	ndr_pull = ndr_pull_init_blob(&blob, mem_ctx);
+	ndr_pull = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(cmdline_lp_ctx));
 	ndr_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 
 	ndr_err = f->ndr_pull(ndr_pull, flags, st);
@@ -397,7 +397,7 @@
 			ndrdump_data(v_blob.data, v_blob.length, dumpdata);
 		}
 
-		ndr_v_pull = ndr_pull_init_blob(&v_blob, mem_ctx);
+		ndr_v_pull = ndr_pull_init_blob(&v_blob, mem_ctx, lp_iconv_convenience(cmdline_lp_ctx));
 		ndr_v_pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 
 		ndr_err = f->ndr_pull(ndr_v_pull, flags, v_st);

Modified: branches/SAMBA_4_0/source/ntvfs/ipc/ipc_rap.c
===================================================================
--- branches/SAMBA_4_0/source/ntvfs/ipc/ipc_rap.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/ntvfs/ipc/ipc_rap.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -116,10 +116,10 @@
 
 	call->mem_ctx = mem_ctx;
 
-	call->ndr_pull_param = ndr_pull_init_blob(&trans->in.params, mem_ctx);
+	call->ndr_pull_param = ndr_pull_init_blob(&trans->in.params, mem_ctx, lp_iconv_convenience(global_loadparm));
 	call->ndr_pull_param->flags = RAPNDR_FLAGS;
 
-	call->ndr_pull_data = ndr_pull_init_blob(&trans->in.data, mem_ctx);
+	call->ndr_pull_data = ndr_pull_init_blob(&trans->in.data, mem_ctx, lp_iconv_convenience(global_loadparm));
 	call->ndr_pull_data->flags = RAPNDR_FLAGS;
 
 	call->heap = talloc(mem_ctx, struct rap_string_heap);

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -821,7 +821,8 @@
 		return dcesrv_fault(call, DCERPC_FAULT_UNK_IF);
 	}
 
-	pull = ndr_pull_init_blob(&call->pkt.u.request.stub_and_verifier, call);
+	pull = ndr_pull_init_blob(&call->pkt.u.request.stub_and_verifier, call,
+				  lp_iconv_convenience(global_loadparm));
 	NT_STATUS_HAVE_NO_MEMORY(pull);
 
 	pull->flags |= LIBNDR_FLAG_REF_ALLOC;
@@ -1049,7 +1050,7 @@
 	blob = dce_conn->partial_input;
 	blob.length = dcerpc_get_frag_length(&blob);
 
-	ndr = ndr_pull_init_blob(&blob, call);
+	ndr = ndr_pull_init_blob(&blob, call, lp_iconv_convenience(call->conn->dce_ctx->lp_ctx));
 	if (!ndr) {
 		talloc_free(dce_conn->partial_input.data);
 		talloc_free(call);

Modified: branches/SAMBA_4_0/source/rpc_server/dcesrv_auth.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcesrv_auth.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/rpc_server/dcesrv_auth.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -326,7 +326,7 @@
 	pkt->u.request.stub_and_verifier.length -= auth_blob.length;
 
 	/* pull the auth structure */
-	ndr = ndr_pull_init_blob(&auth_blob, call);
+	ndr = ndr_pull_init_blob(&auth_blob, call, lp_iconv_convenience(call->conn->dce_ctx->lp_ctx));
 	if (!ndr) {
 		return false;
 	}

Modified: branches/SAMBA_4_0/source/torture/ndr/ndr.c
===================================================================
--- branches/SAMBA_4_0/source/torture/ndr/ndr.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/torture/ndr/ndr.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -23,6 +23,7 @@
 #include "torture/ndr/proto.h"
 #include "torture/ui.h"
 #include "util/dlinklist.h"
+#include "param/param.h"
 
 struct ndr_pull_test_data {
 	DATA_BLOB data;
@@ -38,7 +39,7 @@
 	bool (*check_fn) (struct torture_context *ctx, void *data) = test->fn;
 	const struct ndr_pull_test_data *data = (const struct ndr_pull_test_data *)test->data;
 	void *ds = talloc_zero_size(tctx, data->struct_size);
-	struct ndr_pull *ndr = ndr_pull_init_blob(&(data->data), tctx);
+	struct ndr_pull *ndr = ndr_pull_init_blob(&(data->data), tctx, lp_iconv_convenience(tctx->lp_ctx));
 
 	ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
 
@@ -97,7 +98,7 @@
 	/* Simple test */
 	blob = strhex_to_data_blob("0000");
 	
-	ndr = ndr_pull_init_blob(&blob, mem_ctx);
+	ndr = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(tctx->lp_ctx));
 
 	torture_assert_ndr_success(tctx, ndr_check_string_terminator(ndr, 1, 2),
 				   "simple check_string_terminator test failed");
@@ -115,7 +116,7 @@
 	talloc_free(ndr);
 
 	blob = strhex_to_data_blob("11220000");
-	ndr = ndr_pull_init_blob(&blob, mem_ctx);
+	ndr = ndr_pull_init_blob(&blob, mem_ctx, lp_iconv_convenience(tctx->lp_ctx));
 
 	torture_assert_ndr_success(tctx,
 		ndr_check_string_terminator(ndr, 4, 1),

Modified: branches/SAMBA_4_0/source/torture/rap/rap.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rap/rap.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/torture/rap/rap.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -229,10 +229,12 @@
 	if (!NT_STATUS_IS_OK(result))
 		return result;
 
-	call->ndr_pull_param = ndr_pull_init_blob(&trans.out.params, call);
+	call->ndr_pull_param = ndr_pull_init_blob(&trans.out.params, call,
+						  lp_iconv_convenience(global_loadparm));
 	call->ndr_pull_param->flags = RAPNDR_FLAGS;
 
-	call->ndr_pull_data = ndr_pull_init_blob(&trans.out.data, call);
+	call->ndr_pull_data = ndr_pull_init_blob(&trans.out.data, call,
+						 lp_iconv_convenience(global_loadparm));
 	call->ndr_pull_data->flags = RAPNDR_FLAGS;
 
 	return result;

Modified: branches/SAMBA_4_0/source/torture/rpc/eventlog.c
===================================================================
--- branches/SAMBA_4_0/source/torture/rpc/eventlog.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/torture/rpc/eventlog.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -25,6 +25,7 @@
 #include "librpc/gen_ndr/ndr_eventlog_c.h"
 #include "librpc/gen_ndr/ndr_lsa.h"
 #include "torture/rpc/rpc.h"
+#include "param/param.h"
 
 static void init_lsa_String(struct lsa_String *name, const char *s)
 {
@@ -137,7 +138,7 @@
 		blob.length = *r.out.sent_size;
 		blob.data = talloc_steal(tctx, r.out.data);
 
-		ndr = ndr_pull_init_blob(&blob, tctx);
+		ndr = ndr_pull_init_blob(&blob, tctx, lp_iconv_convenience(tctx->lp_ctx));
 
 		ndr_err = ndr_pull_eventlog_Record(
 			ndr, NDR_SCALARS|NDR_BUFFERS, &rec);

Modified: branches/SAMBA_4_0/source/utils/getntacl.c
===================================================================
--- branches/SAMBA_4_0/source/utils/getntacl.c	2007-12-13 22:46:23 UTC (rev 26431)
+++ branches/SAMBA_4_0/source/utils/getntacl.c	2007-12-13 22:46:27 UTC (rev 26432)
@@ -23,6 +23,7 @@
 #include "system/filesys.h"
 #include "librpc/gen_ndr/ndr_xattr.h"
 #include "lib/util/wrap_xattr.h"
+#include "param/param.h"
 
 static void ntacl_print_debug_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
 
@@ -71,7 +72,7 @@
 	}
 	blob.length = size;
 
-	ndr = ndr_pull_init_blob(&blob, NULL);
+	ndr = ndr_pull_init_blob(&blob, NULL, lp_iconv_convenience(global_loadparm));
 
 	ndr_err = ndr_pull_xattr_NTACL(ndr, NDR_SCALARS|NDR_BUFFERS, *ntacl);
 	if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {



More information about the samba-cvs mailing list