svn commit: samba r6871 - in branches/tmp/pidl2/source: librpc/rpc rpc_server utils

jelmer at samba.org jelmer at samba.org
Wed May 18 00:31:24 GMT 2005


Author: jelmer
Date: 2005-05-18 00:31:22 +0000 (Wed, 18 May 2005)
New Revision: 6871

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

Log:
Some more allocation bugfixes for pidl2; ref variables are only allocated
if LIBNDR_FLAG_REF_ALLOC is set; doesn't matter whether they're out or in
variables.  The previous version always allocated [in,ref] pointers 
and allocated [out,ref] pointers only when LIBNDR_FLAG_REF_ALLOC was set.

This commit adds the LIBNDR_FLAG_REF_ALLOC flag wherever we call 
ndr_pull() for requests.


Modified:
   branches/tmp/pidl2/source/librpc/rpc/dcerpc.c
   branches/tmp/pidl2/source/rpc_server/dcerpc_server.c
   branches/tmp/pidl2/source/utils/ndrdump.c


Changeset:
Modified: branches/tmp/pidl2/source/librpc/rpc/dcerpc.c
===================================================================
--- branches/tmp/pidl2/source/librpc/rpc/dcerpc.c	2005-05-17 23:17:12 UTC (rev 6870)
+++ branches/tmp/pidl2/source/librpc/rpc/dcerpc.c	2005-05-18 00:31:22 UTC (rev 6871)
@@ -1025,6 +1025,7 @@
 	if (!pull) {
 		return NT_STATUS_NO_MEMORY;
 	}
+	pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 
 	status = ndr_pull(pull, NDR_IN, st);
 	if (!NT_STATUS_IS_OK(status)) {

Modified: branches/tmp/pidl2/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/tmp/pidl2/source/rpc_server/dcerpc_server.c	2005-05-17 23:17:12 UTC (rev 6870)
+++ branches/tmp/pidl2/source/rpc_server/dcerpc_server.c	2005-05-18 00:31:22 UTC (rev 6871)
@@ -756,6 +756,8 @@
 	pull = ndr_pull_init_blob(&call->pkt.u.request.stub_and_verifier, call);
 	NT_STATUS_HAVE_NO_MEMORY(pull);
 
+	pull->flags |= LIBNDR_FLAG_REF_ALLOC;
+
 	call->context	= context;
 	call->event_ctx	= context->conn->srv_conn->event.ctx;
 	call->ndr_pull	= pull;

Modified: branches/tmp/pidl2/source/utils/ndrdump.c
===================================================================
--- branches/tmp/pidl2/source/utils/ndrdump.c	2005-05-17 23:17:12 UTC (rev 6870)
+++ branches/tmp/pidl2/source/utils/ndrdump.c	2005-05-18 00:31:22 UTC (rev 6871)
@@ -200,6 +200,7 @@
 		blob.length = size;
 
 		ndr = ndr_pull_init_blob(&blob, mem_ctx);
+		ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
 
 		status = f->ndr_pull(ndr, NDR_IN, st);
 
@@ -230,11 +231,8 @@
 	blob.length = size;
 
 	ndr = ndr_pull_init_blob(&blob, mem_ctx);
+	ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
 
-	if (flags == NDR_OUT) {
-		ndr->flags |= LIBNDR_FLAG_REF_ALLOC;
-	}
-
 	status = f->ndr_pull(ndr, flags, st);
 
 	printf("pull returned %s\n", nt_errstr(status));



More information about the samba-cvs mailing list