summaryrefslogtreecommitdiff
path: root/source/rpc_parse/parse_prs.c
diff options
context:
space:
mode:
authorLuke Leighton <lkcl@samba.org>1999-12-31 09:28:38 +0000
committerLuke Leighton <lkcl@samba.org>1999-12-31 09:28:38 +0000
commit3db2da6e5e97810d1f245bcf695ff5840ff28b25 (patch)
treed0cfd3fb1a05da69dd157bcea95316c62896710b /source/rpc_parse/parse_prs.c
parent187854aad1e567dd1a0bf03cbbf3a20ff7a2691c (diff)
downloadsamba-3db2da6e5e97810d1f245bcf695ff5840ff28b25.tar.gz
oo noo :) found the bug. constructing a pdu was setting the data len
incorrectly (frag len). can't believe it took 10 days to find. can't believe i trashed lib/membuffer.c to find it.
Diffstat (limited to 'source/rpc_parse/parse_prs.c')
-rw-r--r--source/rpc_parse/parse_prs.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/source/rpc_parse/parse_prs.c b/source/rpc_parse/parse_prs.c
index a9ebe6ec79e..c5887cd7a12 100644
--- a/source/rpc_parse/parse_prs.c
+++ b/source/rpc_parse/parse_prs.c
@@ -37,14 +37,17 @@ void prs_debug(prs_struct *ps, int depth, char *desc, char *fn_name)
/*******************************************************************
debug a parse structure
********************************************************************/
-void prs_debug_out(prs_struct *ps, char *msg, int level)
+void prs_debug_out(const prs_struct *ps, char *msg, int level)
{
CHECK_STRUCT(ps);
DEBUG(level,("%s ps: io %s align %d offset %d err %d data %p len %d\n",
msg, BOOLSTR(ps->io), ps->align, ps->offset, ps->error,
ps->data, prs_buf_len(ps)));
- dump_data(level, ps->data, prs_buf_len(ps));
+ if (ps->data != NULL)
+ {
+ dump_data(level, ps->data, prs_buf_len(ps));
+ }
}
/*******************************************************************
@@ -80,6 +83,9 @@ void prs_init(prs_struct *ps, uint32 size, uint8 align, BOOL io)
********************************************************************/
void prs_create(prs_struct *ps, char *data, uint32 size, uint8 align, BOOL io)
{
+ DEBUG(200,("prs_create: data:%p size:%d align:%d io:%s\n",
+ data, size, align, BOOLSTR(io)));
+
prs_init(ps, 0, align, io);
ps->data = data;
ps->data_size = size;
@@ -185,6 +191,8 @@ BOOL prs_buf_copy(char *copy_into, const prs_struct *buf,
DEBUG(200,("prs_struct_copy: data[%d..%d] offset %d len %d\n",
buf->start, data_len, offset, len));
+ prs_debug_out(bcp, "prs_struct_copy", 200);
+
/* there's probably an off-by-one bug, here, and i haven't even tested the code :-) */
while (offset < end && ((q = prs_data(bcp, offset)) != NULL))
{
@@ -397,12 +405,9 @@ void prs_align(prs_struct *ps)
********************************************************************/
BOOL prs_grow(prs_struct *ps, uint32 new_size)
{
- BOOL ret;
CHECK_STRUCT(ps);
if (ps->error) return False;
- ret = prs_grow_data(ps, ps->io, new_size, False);
- prs_debug_out(ps, "prs_grow", 200);
- return ret;
+ return prs_grow_data(ps, ps->io, new_size, False);
}
/*******************************************************************