summaryrefslogtreecommitdiff
path: root/source4/librpc/ndr
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2005-04-04 14:25:29 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:11:24 -0500
commit051206ff1eef474e7929e8fca85b161d5306c6b8 (patch)
tree021794695ad9eeecd17311045973a8e87525f3a3 /source4/librpc/ndr
parent638104dd4c429165f0eb3c332e4915372630a0ac (diff)
downloadsamba-051206ff1eef474e7929e8fca85b161d5306c6b8.tar.gz
samba-051206ff1eef474e7929e8fca85b161d5306c6b8.tar.bz2
samba-051206ff1eef474e7929e8fca85b161d5306c6b8.zip
r6191: fix spoolss_Enum* push code
metze (This used to be commit e66aa87f148d04f4c44b08555345600b8a6278d4)
Diffstat (limited to 'source4/librpc/ndr')
-rw-r--r--source4/librpc/ndr/ndr_spoolss_buf.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/source4/librpc/ndr/ndr_spoolss_buf.c b/source4/librpc/ndr/ndr_spoolss_buf.c
index 2bc55db758..de4a87547d 100644
--- a/source4/librpc/ndr/ndr_spoolss_buf.c
+++ b/source4/librpc/ndr/ndr_spoolss_buf.c
@@ -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) {\