svn commit: samba r6191 - in branches/SAMBA_4_0/source/librpc/ndr: .

metze at samba.org metze at samba.org
Mon Apr 4 14:25:30 GMT 2005


Author: metze
Date: 2005-04-04 14:25:29 +0000 (Mon, 04 Apr 2005)
New Revision: 6191

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

Log:
fix spoolss_Enum* push code

metze

Modified:
   branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c	2005-04-04 14:23:34 UTC (rev 6190)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr_spoolss_buf.c	2005-04-04 14:25:29 UTC (rev 6191)
@@ -29,6 +29,8 @@
 	DATA_BLOB buffer;\
 	if (r->out.info) {\
 		int i;\
+		size_t size;\
+		uint8_t *data;\
 		struct ndr_push *ndr2;\
 \
 		ndr2 = ndr_push_init_ctx(ndr);\
@@ -36,20 +38,24 @@
 			return NT_STATUS_NO_MEMORY;\
 		}\
 \
+		size = ndr2->offset;\
+		data = ndr2->data;\
+\
 		for (i=0;i<r->out.count;i++) {\
 			ndr2->data += ndr2->offset;\
 			ndr2->offset = 0;\
 			NDR_CHECK(ndr_push_set_switch_value(ndr2, &(*r->out.info)[i], r->in.level)); \
 			NDR_CHECK(ndr_push_##type(ndr2, NDR_SCALARS|NDR_BUFFERS, &(*r->out.info)[i]));\
+			size += ndr2->offset;\
 		}\
-		if (*r->in.buf_size >= ndr2->offset) {\
-			buffer = data_blob_const(ndr2->data, ndr2->offset);\
+		if (*r->in.buf_size >= size) {\
+			buffer = data_blob_const(data, size);\
 		} else {\
 			r->out.info = NULL;\
 			r->out.count = 0;\
 			r->out.result = WERR_INSUFFICIENT_BUFFER;\
 		}\
-		*r->out.buf_size = ndr2->offset;\
+		*r->out.buf_size = size;\
 	}\
 	NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.info));\
 	if (r->out.info) {\



More information about the samba-cvs mailing list