Rev 5317: Add ndrdump to samba 3. This only works from external
source at the in file:///home/jelmer/bzr.samba/SAMBA_3_0/
Jelmer Vernooij
jelmer at samba.org
Fri Mar 2 12:52:52 GMT 2007
At file:///home/jelmer/bzr.samba/SAMBA_3_0/
------------------------------------------------------------
revno: 5317
revision-id: jelmer at samba.org-20070302125048-0yjfn5jayr9s8y9o
parent: svn-v2:21647 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_3_0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: SAMBA_3_0
timestamp: Fri 2007-03-02 13:50:48 +0100
message:
Add ndrdump to samba 3. This only works from external source at the
moment. To use, use something like:
./bin/ndrdump -l bin/smbd winreg winreg_EnumValue in <filename>
or to see what functions are available:
./bin/ndrdump -l bin/smbd winreg
modified:
source/Makefile.in svn-v2:2 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-trunk-source%2fMakefile.in
source/librpc/tools/ndrdump.c svn-v2:21565 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_3_0-source%2flibrpc%2ftools%2fndrdump.c
=== modified file 'source/Makefile.in'
--- a/source/Makefile.in 2007-03-01 03:05:51 +0000
+++ b/source/Makefile.in 2007-03-02 12:50:48 +0000
@@ -167,7 +167,7 @@
EVERYTHING_PROGS = bin/debug2html at EXEEXT@ bin/smbfilter at EXEEXT@ \
bin/talloctort at EXEEXT@ bin/replacetort at EXEEXT@ \
- bin/log2pcap at EXEEXT@ bin/sharesec at EXEEXT@
+ bin/log2pcap at EXEEXT@ bin/sharesec at EXEEXT@ bin/ndrdump at EXEEXT@
SHLIBS = @SHLIB_PROGS@ @LIBSMBCLIENT@ @LIBSMBSHAREMODES@ @LIBMSRPC@ @LIBADDNS@
=== modified file 'source/librpc/tools/ndrdump.c'
--- a/source/librpc/tools/ndrdump.c 2007-02-27 18:52:38 +0000
+++ b/source/librpc/tools/ndrdump.c 2007-03-02 12:50:48 +0000
@@ -20,8 +20,13 @@
*/
#include "includes.h"
+#if (_SAMBA_BUILD_ >= 4)
+#include "lib/cmdline/popt_common.h"
#include "system/filesys.h"
#include "system/locale.h"
+#include "librpc/rpc/dcerpc.h"
+#include "librpc/rpc/dcerpc_table.h"
+#endif
static const struct dcerpc_interface_call *find_function(
const struct dcerpc_interface_table *p,
@@ -44,6 +49,7 @@
return &p->calls[i];
}
+#if (_SAMBA_BUILD_ >= 4)
static void show_pipes(void)
{
@@ -60,6 +66,8 @@
exit(1);
}
+#endif
+
static void show_functions(const struct dcerpc_interface_table *p)
{
int i;
@@ -156,7 +164,9 @@
{ NULL }
};
+#if (_SAMBA_BUILD_ >= 4)
dcerpc_table_init();
+#endif
pc = poptGetContext("ndrdump", argc, argv, long_options, 0);
@@ -184,14 +194,21 @@
if (!pipe_name) {
poptPrintUsage(pc, stderr, 0);
+#if (_SAMBA_BUILD_ >= 4)
show_pipes();
+#endif
exit(1);
}
if (plugin != NULL) {
p = load_iface_from_plugin(plugin, pipe_name);
+ }
+#if (_SAMBA_BUILD_ <= 3)
+ else {
+ fprintf(stderr, "Only loading from DSO's supported in Samba 3\n");
+ exit(1);
}
-
+#else
if (!p) {
p = idl_iface_by_name(pipe_name);
}
@@ -205,6 +222,7 @@
p = idl_iface_by_uuid(&uuid);
}
}
+#endif
if (!p) {
printf("Unknown pipe or UUID '%s'\n", pipe_name);
@@ -254,7 +272,11 @@
exit(1);
}
+#if (_SAMBA_BUILD_ >= 4)
+ data = (uint8_t *)file_load(ctx_filename, &size, mem_ctx);
+#else
data = (uint8_t *)file_load(ctx_filename, &size, 0);
+#endif
if (!data) {
perror(ctx_filename);
exit(1);
@@ -280,7 +302,11 @@
}
if (filename)
+#if (_SAMBA_BUILD_ >= 4)
+ data = (uint8_t *)file_load(filename, &size, mem_ctx);
+#else
data = (uint8_t *)file_load(filename, &size, 0);
+#endif
else
data = (uint8_t *)stdin_load(mem_ctx, &size);
@@ -304,12 +330,12 @@
if (ndr_pull->offset != ndr_pull->data_size) {
printf("WARNING! %d unread bytes\n", ndr_pull->data_size - ndr_pull->offset);
- dump_data(0, (const char *)ndr_pull->data+ndr_pull->offset, ndr_pull->data_size - ndr_pull->offset);
+ dump_data(0, ndr_pull->data+ndr_pull->offset, ndr_pull->data_size - ndr_pull->offset);
}
if (dumpdata) {
printf("%d bytes consumed\n", ndr_pull->offset);
- dump_data(0, (const char *)blob.data, blob.length);
+ dump_data(0, blob.data, blob.length);
}
ndr_print = talloc_zero(mem_ctx, struct ndr_print);
@@ -343,7 +369,7 @@
if (dumpdata) {
printf("%ld bytes generated (validate)\n", (long)v_blob.length);
- dump_data(0, (const char *)v_blob.data, v_blob.length);
+ dump_data(0, v_blob.data, v_blob.length);
}
ndr_v_pull = ndr_pull_init_blob(&v_blob, mem_ctx);
@@ -359,7 +385,7 @@
if (ndr_v_pull->offset != ndr_v_pull->data_size) {
printf("WARNING! %d unread bytes in validation\n", ndr_v_pull->data_size - ndr_v_pull->offset);
- dump_data(0, (const char *)ndr_v_pull->data+ndr_v_pull->offset, ndr_v_pull->data_size - ndr_v_pull->offset);
+ dump_data(0, ndr_v_pull->data+ndr_v_pull->offset, ndr_v_pull->data_size - ndr_v_pull->offset);
}
ndr_v_print = talloc_zero(mem_ctx, struct ndr_print);
More information about the samba-cvs
mailing list