summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorMartin Pool <mbp@samba.org>2002-01-02 07:48:07 +0000
committerMartin Pool <mbp@samba.org>2002-01-02 07:48:07 +0000
commit4f3a2be2b9b566a33c5205142666e7e697d8f93f (patch)
tree96ec4817c055f8ecffa04bc456d6285422b54d94 /source3
parenta3f891dbd2e9ee1681e3c8295cd62a877c727d4f (diff)
downloadsamba-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)
Diffstat (limited to 'source3')
-rw-r--r--source3/rpc_client/cli_pipe.c2
-rw-r--r--source3/rpc_parse/parse_prs.c27
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));
}