ndrdump: make use of dump_data_file_diff() in order to show differences
authorStefan Metzmacher <metze@samba.org>
Wed, 3 Nov 2021 12:32:48 +0000 (13:32 +0100)
committerJule Anger <janger@samba.org>
Sun, 30 Jan 2022 09:15:13 +0000 (09:15 +0000)
This makes it much easier to detect differences in the given and
generated buffers.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
(cherry picked from commit d1a7f392a8ceef111a5d6c3d2a3bdb9dcb90db5e)

librpc/tools/ndrdump.c
selftest/knownfail.d/blackbox.ndrdump [new file with mode: 0644]

index 2872a85b62130579829040e6f9b98a43ed7cb0b7..ef92de1ecaaf019009dc53005ee1f3243104e9bd 100644 (file)
@@ -189,6 +189,13 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
        dump_data_file(d, l, !force, stdout);
 }
 
+static void ndrdump_data_diff(const uint8_t *d1, size_t l1,
+                             const uint8_t *d2, size_t l2,
+                             bool force)
+{
+       dump_data_file_diff(stdout, !force, d1, l1, d2, l2);
+}
+
 static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
                                struct ndr_pull *ndr_pull,
                                struct ndr_print *ndr_print,
@@ -753,6 +760,9 @@ static void ndr_print_dummy(struct ndr_print *ndr, const char *format, ...)
                        printf("WARNING! orig and validated differ at byte 0x%02X (%u)\n", i, i);
                        printf("WARNING! orig byte[0x%02X] = 0x%02X validated byte[0x%02X] = 0x%02X\n",
                                i, byte_a, i, byte_b);
+                       ndrdump_data_diff(blob.data, blob.length,
+                                         v_blob.data, v_blob.length,
+                                         dumpdata);
                }
        }
 
diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump
new file mode 100644 (file)
index 0000000..c2d81fc
--- /dev/null
@@ -0,0 +1,6 @@
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_NULL_union_PAC_BUFFER
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_drsuapi_DsAddEntry_1
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_drsuapi_DsReplicaAttribute
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_ntlmsssp_AUTHENTICATE_MESSAGE
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_upn_dns_info_ex
+^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_upn_dns_info_ex_not_supported