ndrdump: dump verification trailer
authorGregor Beck <gbeck@sernet.de>
Mon, 6 Jan 2014 10:19:04 +0000 (11:19 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 8 Jan 2014 13:35:03 +0000 (14:35 +0100)
Pair-Programmed-With: Stefan Metzmacher <metze@samba.org>

Signed-off-by: Gregor Beck <gbeck@sernet.de>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
librpc/tools/ndrdump.c
librpc/tools/wscript_build

index 02cc47aaf9af5d4f7a574a24a7335e48e869ef5d..f7aac4e11127a5a960cbdb1f6eb6a371ccffad8f 100644 (file)
@@ -23,6 +23,7 @@
 #include "system/locale.h"
 #include "librpc/ndr/libndr.h"
 #include "librpc/ndr/ndr_table.h"
+#include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "lib/cmdline/popt_common.h"
 #include "param/param.h"
 
@@ -221,6 +222,7 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
        const struct ndr_interface_call_pipes *in_pipes = NULL;
        const struct ndr_interface_call_pipes *out_pipes = NULL;
        uint32_t highest_ofs;
+       struct dcerpc_sec_verification_trailer *sec_vt = NULL;
 
        ndr_table_init();
 
@@ -400,6 +402,25 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
        ndr_print->print = ndr_print_printf_helper;
        ndr_print->depth = 1;
 
+       ndr_err = ndr_pop_dcerpc_sec_verification_trailer(ndr_pull, mem_ctx, &sec_vt);
+       status = ndr_map_error2ntstatus(ndr_err);
+       if (!NT_STATUS_IS_OK(status)) {
+               printf("ndr_pop_dcerpc_sec_verification_trailer returned %s\n",
+                      nt_errstr(status));
+       }
+
+       if (sec_vt != NULL && sec_vt->count.count > 0) {
+               printf("SEC_VT: consumed %d bytes\n",
+                      (int)(blob.length - ndr_pull->data_size));
+               if (dumpdata) {
+                       ndrdump_data(blob.data + ndr_pull->data_size,
+                                    blob.length - ndr_pull->data_size,
+                                    dumpdata);
+               }
+               ndr_print_dcerpc_sec_verification_trailer(ndr_print, "SEC_VT", sec_vt);
+       }
+       TALLOC_FREE(sec_vt);
+
        if (out_pipes) {
                status = ndrdump_pull_and_print_pipes(function, ndr_pull, ndr_print, out_pipes);
                if (!NT_STATUS_IS_OK(status)) {
index d1f0a269395d39aad1144042cc79f81a166e5b34..a7463a91493bab05e5d48e72fb9e334005824aca 100644 (file)
@@ -3,5 +3,5 @@
 bld.SAMBA_BINARY('ndrdump',
        source='ndrdump.c',
        manpages='ndrdump.1',
-       deps='samba-hostconfig samba-util popt POPT_SAMBA ndr-table errors'
+       deps='samba-hostconfig samba-util popt POPT_SAMBA ndr-table errors NDR_DCERPC'
        )