summaryrefslogtreecommitdiff
path: root/source3/rpc_parse/parse_prs.c
diff options
context:
space:
mode:
authorJean-François Micouleau <jfm@samba.org>2000-02-15 18:07:45 +0000
committerJean-François Micouleau <jfm@samba.org>2000-02-15 18:07:45 +0000
commit8688933c7feb87179c178a30e4fc42970fe1da8f (patch)
tree8ef350f73284081739058e446ac9e740fd0f7c35 /source3/rpc_parse/parse_prs.c
parent13ac8fd847f9cc0a7c7d04034dfb8214edccbe48 (diff)
downloadsamba-8688933c7feb87179c178a30e4fc42970fe1da8f.tar.gz
samba-8688933c7feb87179c178a30e4fc42970fe1da8f.tar.bz2
samba-8688933c7feb87179c178a30e4fc42970fe1da8f.zip
fix the reply of rpc_alter_context
OpenPrinterEx is now decoding correctly the query most of the EnumXXX use the new_buffer struct. check the (un)marshalling return code. conclusion: still a long way to go. all the client code has to be rewritten, and I still wonder how to implement correctly the notify stuff. (This used to be commit 3d6d3863751787b08d40268c83221add1487a5c9)
Diffstat (limited to 'source3/rpc_parse/parse_prs.c')
-rw-r--r--source3/rpc_parse/parse_prs.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c
index 24eff1b779..5d0ea832c8 100644
--- a/source3/rpc_parse/parse_prs.c
+++ b/source3/rpc_parse/parse_prs.c
@@ -150,15 +150,13 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
(unsigned int)extra_space));
return False;
}
-
+
/*
* Decide how much extra space we really need.
*/
extra_space -= (ps->buffer_size - ps->data_offset);
-
if(ps->buffer_size == 0) {
-
/*
* Ensure we have at least a PDU's length, or extra_space, whichever
* is greater.
@@ -172,21 +170,18 @@ BOOL prs_grow(prs_struct *ps, uint32 extra_space)
}
memset(new_data, '\0', new_size );
} else {
-
/*
* If the current buffer size is bigger than the space needed, just
* double it, else add extra_space.
*/
+ new_size = MAX(ps->buffer_size*2, ps->buffer_size + extra_space);
- new_size = MAX(ps->buffer_size*2, ps->buffer_size + extra_space);
-
- if((new_data = Realloc(ps->data_p, new_size)) == NULL) {
+ if ((new_data = Realloc(ps->data_p, new_size)) == NULL) {
DEBUG(0,("prs_grow: Realloc failure for size %u.\n",
(unsigned int)new_size));
return False;
}
}
-
ps->buffer_size = new_size;
ps->data_p = new_data;
@@ -286,12 +281,12 @@ BOOL prs_append_prs_data(prs_struct *dst, prs_struct *src)
Append some data from one parse_struct into another.
********************************************************************/
-BOOL prs_append_some_prs_data(prs_struct *dst, prs_struct *src, uint32 len)
-{
+BOOL prs_append_some_prs_data(prs_struct *dst, prs_struct *src, int32 start, uint32 len)
+{
if(!prs_grow(dst, len))
return False;
-
- memcpy(&dst->data_p[dst->data_offset], prs_data_p(src), (size_t)len);
+
+ memcpy(&dst->data_p[dst->data_offset], prs_data_p(src)+start, (size_t)len);
dst->data_offset += len;
return True;