diff options
author | Jean-François Micouleau <jfm@samba.org> | 2000-02-15 18:07:45 +0000 |
---|---|---|
committer | Jean-François Micouleau <jfm@samba.org> | 2000-02-15 18:07:45 +0000 |
commit | 8688933c7feb87179c178a30e4fc42970fe1da8f (patch) | |
tree | 8ef350f73284081739058e446ac9e740fd0f7c35 /source3/rpc_parse/parse_prs.c | |
parent | 13ac8fd847f9cc0a7c7d04034dfb8214edccbe48 (diff) | |
download | samba-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.c | 19 |
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; |