diff options
author | Luke Leighton <lkcl@samba.org> | 1999-12-31 09:28:38 +0000 |
---|---|---|
committer | Luke Leighton <lkcl@samba.org> | 1999-12-31 09:28:38 +0000 |
commit | 3db2da6e5e97810d1f245bcf695ff5840ff28b25 (patch) | |
tree | d0cfd3fb1a05da69dd157bcea95316c62896710b /source/rpc_parse/parse_prs.c | |
parent | 187854aad1e567dd1a0bf03cbbf3a20ff7a2691c (diff) | |
download | samba-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.c | 17 |
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); } /******************************************************************* |