diff options
author | Martin Pool <mbp@samba.org> | 2002-01-02 07:48:07 +0000 |
---|---|---|
committer | Martin Pool <mbp@samba.org> | 2002-01-02 07:48:07 +0000 |
commit | 4f3a2be2b9b566a33c5205142666e7e697d8f93f (patch) | |
tree | 96ec4817c055f8ecffa04bc456d6285422b54d94 | |
parent | a3f891dbd2e9ee1681e3c8295cd62a877c727d4f (diff) | |
download | samba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.tar.gz samba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.tar.bz2 samba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.zip |
Add prs_dump_before to dump everything from the start of the prs
buffer up to the current position, and use this to dump pipe buffers
just before parsing.
(This used to be commit 92a3ab274e6cf09a8ba39b91f8bbacba6de40b37)
-rw-r--r-- | source3/rpc_client/cli_pipe.c | 2 | ||||
-rw-r--r-- | source3/rpc_parse/parse_prs.c | 27 |
2 files changed, 24 insertions, 5 deletions
diff --git a/source3/rpc_client/cli_pipe.c b/source3/rpc_client/cli_pipe.c index 0d2f6b17e0..63abbc1c56 100644 --- a/source3/rpc_client/cli_pipe.c +++ b/source3/rpc_client/cli_pipe.c @@ -796,7 +796,7 @@ BOOL rpc_api_pipe_req(struct cli_state *cli, uint8 op_num, /* Optionally capture for use in debugging */ slprintf(dump_name, sizeof(dump_name) - 1, "call_%s", cli_pipe_get_name(cli)); - prs_dump(dump_name, op_num, data); + prs_dump_before(dump_name, op_num, data); /* * The auth_len doesn't include the RPC_HDR_AUTH_LEN. diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c index f902210b7b..8bb9f1c70a 100644 --- a/source3/rpc_parse/parse_prs.c +++ b/source3/rpc_parse/parse_prs.c @@ -23,11 +23,30 @@ #include "includes.h" -/******************************************************************* -dump a prs to a file - ********************************************************************/ +/** + * Dump a prs to a file: from the current location through to the end. + **/ void prs_dump(char *name, int v, prs_struct *ps) { + prs_dump_region(name, v, ps, ps->data_offset, ps->buffer_size); +} + + +/** + * Dump from the start of the prs to the current location. + **/ +void prs_dump_before(char *name, int v, prs_struct *ps) +{ + prs_dump_region(name, v, ps, 0, ps->data_offset); +} + + +/** + * Dump everything from the start of the prs up to the current location. + **/ +void prs_dump_region(char *name, int v, prs_struct *ps, + int from_off, int to_off) +{ int fd, i; pstring fname; if (DEBUGLEVEL < 50) return; @@ -41,7 +60,7 @@ void prs_dump(char *name, int v, prs_struct *ps) if (fd != -1 || errno != EEXIST) break; } if (fd != -1) { - write(fd, ps->data_p + ps->data_offset, ps->buffer_size - ps->data_offset); + write(fd, ps->data_p + from_off, to_off - from_off); close(fd); DEBUG(0,("created %s\n", fname)); } |