From bf623bd287c07e9dac93d5a017a115aedb02df30 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 3 Nov 2021 11:05:52 +0100 Subject: [PATCH 1/8] lib/util: split out a dump_data_block16() helper This simplifies the logic a lot for me. It also fixes some corner cases regarding whitespaces in the output, that's why we have to mark a few tests as knownfail, they will be fixed in the next commit. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit 58b09e107cadd7fb8191822d4e7e42657b1ed4c7) --- lib/util/util.c | 119 +++++++++++++------------- selftest/knownfail.d/blackbox.ndrdump | 9 ++ 2 files changed, 68 insertions(+), 60 deletions(-) create mode 100644 selftest/knownfail.d/blackbox.ndrdump diff --git a/lib/util/util.c b/lib/util/util.c index 3ca6b61df324..5874e6d0741d 100644 --- a/lib/util/util.c +++ b/lib/util/util.c @@ -481,6 +481,48 @@ void print_asc(int level, const uint8_t *buf,int len) print_asc_cb(buf, len, debugadd_cb, &level); } +static void dump_data_block16(const char *prefix, size_t idx, + const uint8_t *buf, size_t len, + void (*cb)(const char *buf, void *private_data), + void *private_data) +{ + char tmp[16]; + size_t i; + + SMB_ASSERT(len >= 0 && len <= 16); + + snprintf(tmp, sizeof(tmp), "%s[%04zX]", prefix, idx); + cb(tmp, private_data); + + for (i=0; i<16; i++) { + if (i == 8) { + cb(" ", private_data); + } + if (i < len) { + snprintf(tmp, sizeof(tmp), " %02X", (int)buf[i]); + } else { + snprintf(tmp, sizeof(tmp), " "); + } + cb(tmp, private_data); + } + + cb(" ", private_data); + + if (len == 0) { + cb("EMPTY BLOCK\n", private_data); + return; + } + + for (i=0; i 0) && - (len > i+16) && - all_zero(&buf[i], 16)) - { - i +=16; - continue; + for (i=0;i 0) && (remaining_len > 16) && + (this_len == 16) && all_zero(this_buf, 16)) + { + if (!skipped) { + cb("skipping zero buffer bytes\n", + private_data); + skipped = true; } - - if (i i+16) && - all_zero(&buf[i], 16)) { - if (!skipped) { - cb("skipping zero buffer bytes\n", - private_data); - skipped = true; - } - } - } - } - - if (i%16) { - int n; - n = 16 - (i%16); - cb(" ", private_data); - if (n>8) { - cb(" ", private_data); - } - while (n--) { - cb(" ", private_data); - } - n = MIN(8,i%16); - print_asc_cb(&buf[i-(i%16)], n, cb, private_data); - cb(" ", private_data); - n = (i%16) - n; - if (n>0) { - print_asc_cb(&buf[i-n], n, cb, private_data); - } - cb("\n", private_data); + skipped = false; + dump_data_block16("", i, this_buf, this_len, + cb, private_data); } - } /** diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump new file mode 100644 index 000000000000..ff92bf3b81b0 --- /dev/null +++ b/selftest/knownfail.d/blackbox.ndrdump @@ -0,0 +1,9 @@ +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_fuzzed_drsuapi_DsGetNCChanges +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_Krb5ccache +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_clusapi_QueryAllValues +^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_spoolss_EnumForms +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_input_cmdline_short_struct_name_dump +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_input_cmdline_short_struct_name_print_fail +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_with_hex_struct_name -- 2.25.1 From 0880756cc800a3cb634e923cdcff8469e501b66c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Jan 2022 20:06:40 +0100 Subject: [PATCH 2/8] blackbox.ndrdump: adjust example files to changed dump_data() output. The cleanup using dump_data_block16() fixed the space handling. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit 9110a8854a518befa2908c26076e17a085c5ec48) --- python/samba/tests/blackbox/ndrdump.py | 10 +++++----- selftest/knownfail.d/blackbox.ndrdump | 9 --------- source3/selftest/ktest-krb5_ccache-2.txt | 4 ++-- source3/selftest/ktest-krb5_ccache-3.txt | 4 ++-- .../tests/dns-decode_dns_name_packet-hex.txt | 2 +- .../tests/fuzzed_drsuapi_DsAddEntry_1.txt | 20 +++++++++---------- .../tests/fuzzed_drsuapi_DsGetNCChanges.txt | 2 +- .../fuzzed_drsuapi_DsReplicaAttribute.txt | 5 ++++- 8 files changed, 25 insertions(+), 31 deletions(-) delete mode 100644 selftest/knownfail.d/blackbox.ndrdump diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py index 9a4e6cabe8b4..b64ac705868a 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -171,7 +171,7 @@ dump OK def test_ndrdump_input_cmdline_short_struct_name_dump(self): expected = '''pull returned Buffer Size Error 6 bytes consumed -[0000] 61 62 63 64 65 66 67 abcdefg ''' \ +[0000] 61 62 63 64 65 66 67 abcdefg''' \ ''' ''' try: @@ -187,10 +187,10 @@ dump OK def test_ndrdump_input_cmdline_short_struct_name_print_fail(self): expected = '''pull returned Buffer Size Error 6 bytes consumed -[0000] 61 62 63 64 65 66 67 abcdefg ''' \ +[0000] 61 62 63 64 65 66 67 abcdefg''' \ ''' WARNING! 1 unread bytes -[0000] 67 g ''' \ +[0000] 67 g''' \ ''' WARNING: pull of GUID was incomplete, therefore the parse below may SEGFAULT GUID : 64636261-6665-0000-0000-000000000000 @@ -212,7 +212,7 @@ WARNING! 53 unread bytes [0000] 00 FF 00 00 FF 00 00 00 00 09 00 00 00 08 00 33 ........ .......3 [0010] 33 32 37 36 32 36 39 33 32 37 36 38 34 01 00 00 32762693 27684... [0020] 80 32 0D FF 00 00 FF 00 00 00 00 08 00 00 00 1C .2...... ........ -[0030] F1 29 08 00 00 .)... ''' \ +[0030] F1 29 08 00 00 .)...''' \ b''' clusapi_QueryAllValues: struct clusapi_QueryAllValues out: struct clusapi_QueryAllValues @@ -397,7 +397,7 @@ dump OK def test_ndrdump_fuzzed_spoolss_EnumForms(self): expected_head = b'''pull returned Success WARNING! 2 unread bytes -[0000] 00 00 .. ''' b''' +[0000] 00 00 ..''' b''' spoolss_EnumForms: struct spoolss_EnumForms out: struct spoolss_EnumForms count : * diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump deleted file mode 100644 index ff92bf3b81b0..000000000000 --- a/selftest/knownfail.d/blackbox.ndrdump +++ /dev/null @@ -1,9 +0,0 @@ -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_fuzzed_drsuapi_DsGetNCChanges -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_Krb5ccache -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_clusapi_QueryAllValues -^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_spoolss_EnumForms -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_input_cmdline_short_struct_name_dump -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_input_cmdline_short_struct_name_print_fail -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_with_hex_struct_name diff --git a/source3/selftest/ktest-krb5_ccache-2.txt b/source3/selftest/ktest-krb5_ccache-2.txt index c86750ae5851..4b899596568d 100644 --- a/source3/selftest/ktest-krb5_ccache-2.txt +++ b/source3/selftest/ktest-krb5_ccache-2.txt @@ -113,7 +113,7 @@ pull returned Success [03D0] 66 21 17 77 51 A7 1F 1D 84 3B 7C B1 5D 4E B8 D4 f!.wQ... .;|.]N.. [03E0] F9 C5 75 06 AA 19 45 1C E9 06 9E AD 23 26 6B 10 ..u...E. ....#&k. [03F0] 53 A0 36 D3 58 9F 5E 8C CB A5 F6 BC C9 30 3C BC S.6.X.^. .....0<. -[0400] AD FF 7C 92 F0 C6 9A 02 ..|..... +[0400] AD FF 7C 92 F0 C6 9A 02 ..|..... second_ticket : DATA_BLOB length=0 further_creds : DATA_BLOB length=10683 [0000] 00 00 00 01 00 00 00 01 00 00 00 17 4B 54 45 53 ........ ....KTES @@ -900,7 +900,7 @@ pull returned Success [03D0] 66 21 17 77 51 A7 1F 1D 84 3B 7C B1 5D 4E B8 D4 f!.wQ... .;|.]N.. [03E0] F9 C5 75 06 AA 19 45 1C E9 06 9E AD 23 26 6B 10 ..u...E. ....#&k. [03F0] 53 A0 36 D3 58 9F 5E 8C CB A5 F6 BC C9 30 3C BC S.6.X.^. .....0<. -[0400] AD FF 7C 92 F0 C6 9A 02 ..|..... +[0400] AD FF 7C 92 F0 C6 9A 02 ..|..... second_ticket : DATA_BLOB length=0 further_creds : DATA_BLOB length=10683 [0000] 00 00 00 01 00 00 00 01 00 00 00 17 4B 54 45 53 ........ ....KTES diff --git a/source3/selftest/ktest-krb5_ccache-3.txt b/source3/selftest/ktest-krb5_ccache-3.txt index 76c492cd2b1f..2d3e669b6cb4 100644 --- a/source3/selftest/ktest-krb5_ccache-3.txt +++ b/source3/selftest/ktest-krb5_ccache-3.txt @@ -113,7 +113,7 @@ pull returned Success [03D0] 60 CA 17 FF 8E 66 80 76 CB 35 46 26 C3 BD CA 83 `....f.v .5F&.... [03E0] F0 04 08 0D 4C 5D B2 E4 7C 1C 82 28 D7 2C 42 B1 ....L].. |..(.,B. [03F0] 36 72 60 5E 26 4A 79 D0 41 94 3C 2C 65 0E 32 18 6r`^&Jy. A.<,e.2. -[0400] B8 56 26 9D D3 84 78 BB .V&...x. +[0400] B8 56 26 9D D3 84 78 BB .V&...x. second_ticket : DATA_BLOB length=0 further_creds : DATA_BLOB length=4748 [0000] 00 00 00 01 00 00 00 01 00 00 00 17 4B 54 45 53 ........ ....KTES @@ -529,7 +529,7 @@ pull returned Success [03D0] 60 CA 17 FF 8E 66 80 76 CB 35 46 26 C3 BD CA 83 `....f.v .5F&.... [03E0] F0 04 08 0D 4C 5D B2 E4 7C 1C 82 28 D7 2C 42 B1 ....L].. |..(.,B. [03F0] 36 72 60 5E 26 4A 79 D0 41 94 3C 2C 65 0E 32 18 6r`^&Jy. A.<,e.2. -[0400] B8 56 26 9D D3 84 78 BB .V&...x. +[0400] B8 56 26 9D D3 84 78 BB .V&...x. second_ticket : DATA_BLOB length=0 further_creds : DATA_BLOB length=4748 [0000] 00 00 00 01 00 00 00 01 00 00 00 17 4B 54 45 53 ........ ....KTES diff --git a/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt index 02e95c0bd203..84b55f2d3622 100644 --- a/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt +++ b/source4/librpc/tests/dns-decode_dns_name_packet-hex.txt @@ -30,6 +30,6 @@ pull returned Success cname_record : '' unexpected : DATA_BLOB length=18 [0000] 0F 62 6E 61 6D 65 64 6F 74 70 72 65 66 69 78 32 .bnamedo tprefix2 -[0010] C0 0C .. +[0010] C0 0C .. additional: ARRAY(0) dump OK diff --git a/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt b/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt index 79b289db4910..f3a4bcd914bb 100644 --- a/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt +++ b/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt @@ -60,7 +60,7 @@ WARNING! 47 unread bytes values: ARRAY(1) values: struct drsuapi_DsAttributeValue attid : DATA_BLOB length=3 -[0000] 2F 00 17 /.. +[0000] 2F 00 17 /.. attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_objectCategory (0x9030E) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -82,7 +82,7 @@ skipping zero buffer bytes [0090] 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 72 00 m.b.a.2. 0.0.8.r. [00A0] 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 61 00 2.,.D.C. =.e.x.a. [00B0] 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 3D 00 m.p.l.e. ,.D.C.=. -[00C0] 63 00 6F 00 6D 00 00 00 c.o.m... +[00C0] 63 00 6F 00 6D 00 00 00 c.o.m... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_invocationId (0x20073) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -218,7 +218,7 @@ skipping zero buffer bytes __ndr_size : 0x00000004 (4) blob : * blob : DATA_BLOB length=4 -[0000] 04 00 00 00 .... +[0000] 04 00 00 00 .... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_systemFlags (0x90177) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -229,7 +229,7 @@ skipping zero buffer bytes __ndr_size : 0x00000004 (4) blob : * blob : DATA_BLOB length=4 -[0000] 00 00 00 02 .... +[0000] 00 00 00 02 .... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_replPropertyMetaData (0x90003) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -250,7 +250,7 @@ skipping zero buffer bytes [0080] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. [0090] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. [00A0] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. -[00B0] 6D 00 EB 00 m... +[00B0] 6D 00 EB 00 m... push returned Success pull returned Success drsuapi_DsAddEntry: struct drsuapi_DsAddEntry @@ -310,7 +310,7 @@ pull returned Success values: ARRAY(1) values: struct drsuapi_DsAttributeValue attid : DATA_BLOB length=3 -[0000] 2F 00 17 /.. +[0000] 2F 00 17 /.. attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_objectCategory (0x9030E) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -332,7 +332,7 @@ skipping zero buffer bytes [0090] 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 72 00 m.b.a.2. 0.0.8.r. [00A0] 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 61 00 2.,.D.C. =.e.x.a. [00B0] 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 3D 00 m.p.l.e. ,.D.C.=. -[00C0] 63 00 6F 00 6D 00 00 00 c.o.m... +[00C0] 63 00 6F 00 6D 00 00 00 c.o.m... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_invocationId (0x20073) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -468,7 +468,7 @@ skipping zero buffer bytes __ndr_size : 0x00000004 (4) blob : * blob : DATA_BLOB length=4 -[0000] 04 00 00 00 .... +[0000] 04 00 00 00 .... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_systemFlags (0x90177) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -479,7 +479,7 @@ skipping zero buffer bytes __ndr_size : 0x00000004 (4) blob : * blob : DATA_BLOB length=4 -[0000] 00 00 00 02 .... +[0000] 00 00 00 02 .... attributes: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_replPropertyMetaData (0x90003) value_ctr: struct drsuapi_DsAttributeValueCtr @@ -500,7 +500,7 @@ skipping zero buffer bytes [0080] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. [0090] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. [00A0] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. -[00B0] 6D 00 EB 00 m... +[00B0] 6D 00 EB 00 m... WARNING! orig bytes:2555 validated pushed bytes:2504 WARNING! orig pulled bytes:2508 validated pulled bytes:2504 WARNING! orig and validated differ at byte 0x30 (48) diff --git a/source4/librpc/tests/fuzzed_drsuapi_DsGetNCChanges.txt b/source4/librpc/tests/fuzzed_drsuapi_DsGetNCChanges.txt index d688e7b40e91..1e2636441697 100644 --- a/source4/librpc/tests/fuzzed_drsuapi_DsGetNCChanges.txt +++ b/source4/librpc/tests/fuzzed_drsuapi_DsGetNCChanges.txt @@ -1,6 +1,6 @@ pull returned Success WARNING! 4 unread bytes -[0000] 00 00 00 00 .... +[0000] 00 00 00 00 .... drsuapi_DsGetNCChanges: struct drsuapi_DsGetNCChanges out: struct drsuapi_DsGetNCChanges level_out : * diff --git a/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt b/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt index 9e9a8859627a..302ccb401ef9 100644 --- a/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt +++ b/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt @@ -3,10 +3,13 @@ WARNING! 179 unread bytes [0000] 00 00 00 00 00 FF 00 00 00 00 00 00 00 00 00 00 ........ ........ skipping zero buffer bytes [0040] 00 00 00 00 00 00 00 00 00 40 00 00 00 00 00 00 ........ .@...... +skipping zero buffer bytes [0060] 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@.... ........ +skipping zero buffer bytes [0080] 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@.... ........ [0090] 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 ........ .....@.. -[00B0] 00 00 00 ... +skipping zero buffer bytes +[00B0] 00 00 00 ... drsuapi_DsReplicaAttribute: struct drsuapi_DsReplicaAttribute attid : DRSUAPI_ATTID_objectClass (0x0) value_ctr: struct drsuapi_DsAttributeValueCtr -- 2.25.1 From b2d6934d7cac8fa8577d46cf72ebff55c234443c Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 3 Nov 2021 11:40:13 +0100 Subject: [PATCH 3/8] lib/util: add dump_data_diff*() helpers That will make it easy to see the difference between two memory buffers. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit b489b7feda19b3c0f0fe2300f2c76d416776355b) --- lib/util/util.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ lib/util/util.h | 28 +++++++++++++++++ 2 files changed, 112 insertions(+) diff --git a/lib/util/util.c b/lib/util/util.c index 5874e6d0741d..06977f232297 100644 --- a/lib/util/util.c +++ b/lib/util/util.c @@ -614,6 +614,90 @@ void dump_data_file(const uint8_t *buf, int len, bool omit_zero_bytes, dump_data_cb(buf, len, omit_zero_bytes, fprintf_cb, f); } +/** + * Write dump of compared binary data to a callback + */ +void dump_data_diff_cb(const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2, + bool omit_zero_bytes, + void (*cb)(const char *buf, void *private_data), + void *private_data) +{ + size_t len = MAX(len1, len2); + size_t i; + bool skipped = false; + + for (i=0; i 0) && (remaining_len > 16) && + (this_len1 == 16) && all_zero(this_buf1, 16) && + (this_len2 == 16) && all_zero(this_buf2, 16)) + { + if (!skipped) { + cb("skipping zero buffer bytes\n", + private_data); + skipped = true; + } + continue; + } + + skipped = false; + + if ((this_len1 == this_len2) && + (memcmp(this_buf1, this_buf2, this_len1) == 0)) + { + dump_data_block16(" ", i, this_buf1, this_len1, + cb, private_data); + continue; + } + + dump_data_block16("-", i, this_buf1, this_len1, + cb, private_data); + dump_data_block16("+", i, this_buf2, this_len2, + cb, private_data); + } +} + +_PUBLIC_ void dump_data_diff(int dbgc_class, int level, + bool omit_zero_bytes, + const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2) +{ + struct debug_channel_level dcl = { dbgc_class, level }; + + if (!DEBUGLVLC(dbgc_class, level)) { + return; + } + dump_data_diff_cb(buf1, len1, buf2, len2, true, debugadd_channel_cb, &dcl); +} + +_PUBLIC_ void dump_data_file_diff(FILE *f, + bool omit_zero_bytes, + const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2) +{ + dump_data_diff_cb(buf1, len1, buf2, len2, omit_zero_bytes, fprintf_cb, f); +} + /** malloc that aborts with smb_panic on fail or zero size. **/ diff --git a/lib/util/util.h b/lib/util/util.h index a7acad568804..072f04862348 100644 --- a/lib/util/util.h +++ b/lib/util/util.h @@ -51,4 +51,32 @@ _PUBLIC_ void dump_data(int level, const uint8_t *buf,int len); */ _PUBLIC_ void dump_data_dbgc(int dbgc_class, int level, const uint8_t *buf, int len); +/** + * Write dump of compared binary data to a callback + */ +void dump_data_diff_cb(const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2, + bool omit_zero_bytes, + void (*cb)(const char *buf, void *private_data), + void *private_data); + +/** + * Write dump of compared binary data to the log file. + * + * The data is only written if the log level is at least level for + * debug class dbgc_class. + */ +_PUBLIC_ void dump_data_diff(int dbgc_class, int level, + bool omit_zero_bytes, + const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2); + +/** + * Write dump of compared binary data to the given file handle + */ +_PUBLIC_ void dump_data_file_diff(FILE *f, + bool omit_zero_bytes, + const uint8_t *buf1, size_t len1, + const uint8_t *buf2, size_t len2); + #endif -- 2.25.1 From 1515d871273a19a1b0de6d77adad4ee378e5820d Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 3 Nov 2021 13:32:48 +0100 Subject: [PATCH 4/8] ndrdump: make use of dump_data_file_diff() in order to show differences 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 Reviewed-by: Andreas Schneider (cherry picked from commit d1a7f392a8ceef111a5d6c3d2a3bdb9dcb90db5e) --- librpc/tools/ndrdump.c | 10 ++++++++++ selftest/knownfail.d/blackbox.ndrdump | 6 ++++++ 2 files changed, 16 insertions(+) create mode 100644 selftest/knownfail.d/blackbox.ndrdump diff --git a/librpc/tools/ndrdump.c b/librpc/tools/ndrdump.c index 2872a85b6213..ef92de1ecaaf 100644 --- a/librpc/tools/ndrdump.c +++ b/librpc/tools/ndrdump.c @@ -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 index 000000000000..c2d81fc45988 --- /dev/null +++ b/selftest/knownfail.d/blackbox.ndrdump @@ -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 -- 2.25.1 From 361bedaf83aa30bb7e162e29753d59a2aa4b3b76 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Jan 2022 20:28:59 +0100 Subject: [PATCH 5/8] blackbox.ndrdump: adjust example files to the usage of dump_data_diff output. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit 1dc385cb648f0c37b04f4ede6b1c96916e379b23) --- python/samba/tests/blackbox/ndrdump.py | 4 + selftest/knownfail.d/blackbox.ndrdump | 6 - .../tests/fuzzed_drsuapi_DsAddEntry_1.txt | 277 ++++++++++++++++++ .../fuzzed_drsuapi_DsReplicaAttribute.txt | 26 ++ .../fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt | 33 +++ .../librpc/tests/krb5pac_upn_dns_info_ex.txt | 61 ++++ .../krb5pac_upn_dns_info_ex_not_supported.txt | 69 +++++ 7 files changed, 470 insertions(+), 6 deletions(-) delete mode 100644 selftest/knownfail.d/blackbox.ndrdump diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py index b64ac705868a..a1785685ab92 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -481,6 +481,10 @@ pull returned Success WARNING! orig bytes:29 validated pushed bytes:16 WARNING! orig and validated differ at byte 0x04 (4) WARNING! orig byte[0x04] = 0xC6 validated byte[0x04] = 0x00 +-[0000] 40 F3 38 41 C6 92 87 04 00 00 00 00 00 00 00 06 @.8A.... ........ ++[0000] 40 F3 38 41 00 00 00 00 00 00 00 00 00 00 00 00 @.8A.... ........ +-[0010] F5 FF 00 3C 3C 25 FF 70 16 1F A0 12 84 ...<<%.p ..... ++[0010] EMPTY BLOCK dump OK ''' try: diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump deleted file mode 100644 index c2d81fc45988..000000000000 --- a/selftest/knownfail.d/blackbox.ndrdump +++ /dev/null @@ -1,6 +0,0 @@ -^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 diff --git a/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt b/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt index f3a4bcd914bb..365be4333b2e 100644 --- a/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt +++ b/source4/librpc/tests/fuzzed_drsuapi_DsAddEntry_1.txt @@ -505,4 +505,281 @@ WARNING! orig bytes:2555 validated pushed bytes:2504 WARNING! orig pulled bytes:2508 validated pulled bytes:2504 WARNING! orig and validated differ at byte 0x30 (48) WARNING! orig byte[0x30] = 0x82 validated byte[0x30] = 0x7F + [0000] 00 00 00 00 6D FC 1C AB 6B 62 D2 4A BB BA F6 48 ....m... kb.J...H + [0010] 9D F0 06 30 02 00 00 00 02 00 00 00 00 00 00 00 ...0.... ........ + [0020] 00 00 02 00 00 00 00 00 0B 00 00 00 04 00 02 00 ........ ........ +-[0030] 82 00 00 00 3C 01 00 00 00 00 00 00 00 00 00 00 ....<... ........ ++[0030] 7F 00 00 00 36 01 00 00 00 00 00 00 00 00 00 00 ....6... ........ +skipping zero buffer bytes +-[0060] 00 00 00 00 00 00 00 00 81 00 00 00 43 00 4E 00 ........ ....C.N. ++[0060] 00 00 00 00 00 00 00 00 7E 00 00 00 43 00 4E 00 ........ ~...C.N. + [0070] 3D 00 4E 00 54 00 44 00 53 00 20 00 53 00 65 00 =.N.T.D. S. .S.e. + [0080] 74 00 74 00 69 00 6E 00 67 00 73 00 2C 00 43 00 t.t.i.n. g.s.,.C. + [0090] 4E 00 3D 00 73 00 6D 00 62 00 74 00 6F 00 72 00 N.=.s.m. b.t.o.r. + [00A0] 74 00 75 00 72 00 65 00 64 00 63 00 2C 00 43 00 t.u.r.e. d.c.,.C. + [00B0] 4E 00 3D 00 53 00 65 00 72 00 76 00 65 00 72 00 N.=.S.e. r.v.e.r. + [00C0] 73 00 2C 00 43 00 4E 00 3D 00 44 00 65 00 66 00 s.,.C.N. =.D.e.f. + [00D0] 61 00 75 00 6C 00 74 00 2D 00 46 00 69 00 72 00 a.u.l.t. -.F.i.r. + [00E0] 73 00 74 00 2D 00 53 00 69 00 74 00 65 00 2D 00 s.t.-.S. i.t.e.-. + [00F0] 4E 00 61 00 6D 00 65 00 2C 00 43 00 4E 00 3D 00 N.a.m.e. ,.C.N.=. + [0100] 53 00 69 00 74 00 65 00 73 00 2C 00 43 00 4E 00 S.i.t.e. s.,.C.N. + [0110] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. + [0120] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 FF r.a.t.i. o.n.,.D. + [0130] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. + [0140] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. + [0150] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. +-[0160] 2C 00 44 00 43 00 3D FE 00 00 00 00 00 00 00 00 ,.D.C.=. ........ ++[0160] 2C 00 44 00 43 00 3D FE 00 00 00 00 0B 00 00 00 ,.D.C.=. ........ +-[0170] 0B 00 00 00 19 01 02 00 01 00 00 00 08 00 02 00 ........ ........ ++[0170] 19 01 02 00 01 00 00 00 08 00 02 00 00 00 00 00 ........ ........ +-[0180] 00 00 00 00 01 00 00 00 0C 00 02 00 0E 03 09 00 ........ ........ ++[0180] 01 00 00 00 0C 00 02 00 0E 03 09 00 01 00 00 00 ........ ........ +-[0190] 01 00 00 00 10 00 02 00 73 00 02 00 01 00 00 00 ........ s....... ++[0190] 10 00 02 00 73 00 02 00 01 00 00 00 14 00 02 00 ....s... ........ +-[01A0] 14 00 02 00 0E 00 02 00 03 00 00 00 18 00 02 00 ........ ........ ++[01A0] 0E 00 02 00 03 00 00 00 18 00 02 00 2C 07 09 00 ........ ....,... +-[01B0] 2C 07 09 00 03 00 00 00 1C 00 02 00 24 00 02 00 ,....... ....$... ++[01B0] 03 00 00 00 1C 00 02 00 24 00 02 00 01 00 00 00 ........ $....... +-[01C0] 01 00 00 00 20 00 02 00 1C 07 09 00 01 00 00 00 .... ... ........ ++[01C0] 20 00 02 00 1C 07 09 00 01 00 00 00 24 00 02 00 ....... ....$... +-[01D0] 24 00 02 00 B3 05 09 00 01 00 00 00 83 00 02 00 $....... ........ ++[01D0] B3 05 09 00 01 00 00 00 28 00 02 00 77 01 09 00 ........ (...w... +-[01E0] 77 01 09 00 01 00 00 00 2C 00 02 00 03 00 09 00 w....... ,....... ++[01E0] 01 00 00 00 2C 00 02 00 03 00 09 00 01 00 00 00 ....,... ........ +-[01F0] 01 00 00 00 30 00 02 00 01 00 00 00 A0 00 00 00 ....0... ........ ++[01F0] 30 00 02 00 01 00 00 00 A0 00 00 00 34 00 02 00 0....... ....4... +-[0200] 34 00 02 00 A0 00 00 00 01 00 04 80 14 00 00 00 4....... ........ ++[0200] A0 00 00 00 01 00 04 80 14 00 00 00 30 00 00 00 ........ ....0... +-[0210] 30 00 00 00 00 00 00 00 4C 00 00 00 01 05 00 00 0....... L....... ++[0210] 00 00 00 00 4C 00 00 00 01 05 00 00 00 00 00 05 ....L... ........ +-[0220] 00 00 00 05 15 00 00 00 4B 7D 63 4C 74 4C AF E6 ........ K}cLtL.. ++[0220] 15 00 00 00 4B 7D 63 4C 74 4C AF E6 AD 78 E1 B1 ....K}cL tL...x.. +-[0230] AD 78 E1 B1 00 02 00 00 01 05 00 00 00 00 00 05 .x...... ........ ++[0230] 00 02 00 00 01 05 00 00 00 00 00 05 15 00 00 00 ........ ........ +-[0240] 15 00 00 00 4B 7D 63 4C 74 4C AF E6 AD 78 E1 B1 ....K}cL tL...x.. ++[0240] 4B 7D 63 4C 74 4C AF E6 AD 78 E1 B1 00 02 00 00 K}cLtL.. .x...... +-[0250] 00 02 00 00 02 00 54 00 03 00 00 00 00 00 14 00 ......T. ........ ++[0250] 02 00 54 00 03 00 00 00 00 00 14 00 94 00 02 00 ..T..... ........ +-[0260] 94 00 02 00 01 01 00 00 00 00 00 05 0B 00 00 00 ........ ........ ++[0260] 01 01 00 00 00 00 00 05 0B 00 00 00 00 00 24 00 ........ ......$. +-[0270] 00 00 24 00 FD 01 0F 00 01 05 00 00 00 00 00 05 ..$..... ........ ++[0270] FD 01 0F 00 01 05 00 00 00 00 00 05 15 00 00 00 ........ ........ +-[0280] 15 00 00 00 4B 7D 63 4C 74 4C AF E6 AD 78 E1 B1 ....K}cL tL...x.. ++[0280] 4B 7D 63 4C 74 4C AF E6 AD 78 E1 B1 00 02 00 00 K}cLtL.. .x...... +-[0290] 00 02 00 00 00 00 14 00 FF 01 0F 00 01 01 00 00 ........ ........ ++[0290] 00 00 14 00 FF 01 0F 00 01 01 00 00 00 00 00 05 ........ ........ +-[02A0] 00 00 00 05 12 00 00 00 01 00 00 00 04 00 00 00 ........ ........ ++[02A0] 12 00 00 00 01 00 00 00 03 00 00 00 38 00 02 00 ........ ....8... +-[02B0] 38 00 02 00 03 00 00 00 2F 00 17 00 01 00 00 00 8....... /....... ++[02B0] 03 00 00 00 2F 00 17 00 01 00 00 00 C8 00 00 00 ..../... ........ +-[02C0] C8 00 00 00 3C 00 02 00 C8 00 00 00 C8 00 00 00 ....<... ........ ++[02C0] 3C 00 02 00 C8 00 00 00 C8 00 00 00 00 00 00 00 <....... ........ +-[02D0] 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 ........ ........ ++[02D0] 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[02F0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[02F0] 00 00 00 00 00 00 00 00 00 00 00 00 47 00 00 00 ........ ....G... +-[0300] 47 00 00 00 43 00 4E 00 3D 00 4E 00 54 00 44 00 G...C.N. =.N.T.D. ++[0300] 43 00 4E 00 3D 00 4E 00 54 00 44 00 53 00 2D 00 C.N.=.N. T.D.S.-. +-[0310] 53 00 2D 00 44 00 53 00 41 05 9A 00 43 00 4E 00 S.-.D.S. A...C.N. ++[0310] 44 00 53 00 41 05 9A 00 43 00 4E 00 3D 00 53 00 D.S.A... C.N.=.S. +-[0320] 3D 00 53 00 63 00 68 00 65 00 6D 00 61 00 2C 00 =.S.c.h. e.m.a.,. ++[0320] 63 00 68 00 65 00 6D 00 61 00 2C 00 43 00 4E 00 c.h.e.m. a.,.C.N. +-[0330] 43 00 4E 00 3D 00 43 00 6F 00 6E 00 66 00 69 00 C.N.=.C. o.n.f.i. ++[0330] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. +-[0340] 67 00 75 00 72 00 61 00 74 00 69 00 6F 00 6E 00 g.u.r.a. t.i.o.n. ++[0340] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. +-[0350] 2C 00 44 00 43 00 3D 00 73 00 61 00 6D 00 62 00 ,.D.C.=. s.a.m.b. ++[0350] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. +-[0360] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. ++[0360] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. +-[0370] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. ++[0370] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. +-[0380] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. ++[0380] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... +-[0390] 6D 00 00 00 01 00 00 00 10 00 00 00 40 00 02 00 m....... ....@... ++[0390] 01 00 00 00 10 00 00 00 40 00 02 00 10 00 00 00 ........ @....... +-[03A0] 10 00 00 00 1B 70 EA 28 06 D8 59 47 A9 EC 5E 7D .....p.( ..YG..^} ++[03A0] 1B 70 EA 28 06 D8 59 47 A9 EC 5E 7D E5 52 16 DC .p.(..YG ..^}.R.. +-[03B0] E5 52 16 DC 03 00 00 00 9C 00 00 00 44 00 02 00 .R...... ....D... ++[03B0] 03 00 00 00 9C 00 00 00 44 00 02 00 7A 00 00 00 ........ D...z... +-[03C0] 7A 00 00 00 48 00 02 00 B0 00 00 00 4C 00 02 00 z...H... ....L... ++[03C0] 48 00 02 00 B0 00 00 00 4C 00 02 00 9C 00 00 00 H....... L....... +-[03D0] 9C 00 00 00 9C 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[03D0] 9C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[0400] 00 00 00 00 00 00 00 00 31 00 00 00 43 00 4E 00 ........ 1...C.N. ++[0400] 00 00 00 00 31 00 00 00 43 00 4E 00 3D 00 43 00 ....1... C.N.=.C. +-[0410] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. ++[0410] 6F 00 6E 00 66 00 69 00 67 00 75 00 72 00 61 00 o.n.f.i. g.u.r.a. +-[0420] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. ++[0420] 74 00 69 00 6F 00 6E 00 2C 00 44 00 43 00 3D 00 t.i.o.n. ,.D.C.=. +-[0430] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. ++[0430] 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 s.a.m.b. a.2.0.0. +-[0440] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. ++[0440] 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 8.r.2.,. D.C.=.e. +-[0450] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. ++[0450] 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 x.a.m.p. l.e.,.D. +-[0460] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... ++[0460] 43 00 3D 00 63 00 6F 00 6D 00 00 00 7A 00 00 00 C.=.c.o. m...z... +-[0470] 7A 00 00 00 7A 00 00 00 00 00 00 00 00 00 00 00 z...z... ........ ++[0470] 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 z....... ........ +skipping zero buffer bytes +-[04A0] 00 00 00 00 00 00 00 00 20 00 00 00 44 00 43 00 ........ ...D.C. ++[04A0] 00 00 00 00 20 00 00 00 44 00 43 00 3D 00 73 00 .... ... D.C.=.s. +-[04B0] 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 =.s.a.m. b.a.2.0. ++[04B0] 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 a.m.b.a. 2.0.0.8. +-[04C0] 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 0.8.r.2. ,.D.C.=. ++[04C0] 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 r.2.,.D. C.=.e.x. +-[04D0] 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 e.x.a.m. p.l.e.,. ++[04D0] 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 a.m.p.l. e.,.D.C. +-[04E0] 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 00 00 D.C.=.c. o.m..... ++[04E0] 3D 00 63 00 6F 00 6D 00 00 00 00 00 B0 00 00 00 =.c.o.m. ........ +-[04F0] B0 00 00 00 B0 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[04F0] B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +-[0500] 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 ........ ........ ++[0500] 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[0520] 00 00 00 00 00 00 00 00 3B 00 00 00 43 00 4E 00 ........ ;...C.N. ++[0520] 00 00 00 00 3B 00 00 00 43 00 4E 00 3D 00 53 00 ....;... C.N.=.S. +-[0530] 3D 00 53 00 63 00 68 00 65 00 6D 00 61 00 2C 00 =.S.c.h. e.m.a.,. ++[0530] 63 00 68 00 65 00 6D 00 61 00 2C 00 43 00 4E 00 c.h.e.m. a.,.C.N. +-[0540] 43 00 4E 00 3D 00 43 00 6F 00 6E 00 66 00 69 00 C.N.=.C. o.n.f.i. ++[0540] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. +-[0550] 67 00 75 00 72 00 61 00 74 00 69 00 6F 00 6E 00 g.u.r.a. t.i.o.n. ++[0550] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. +-[0560] 2C 00 44 00 43 00 3D 00 73 00 61 00 6D 00 62 00 ,.D.C.=. s.a.m.b. ++[0560] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. +-[0570] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. ++[0570] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. +-[0580] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. ++[0580] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. +-[0590] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. ++[0590] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... +-[05A0] 6D 00 00 00 03 00 00 00 9C 00 00 00 50 00 02 00 m....... ....P... ++[05A0] 03 00 00 00 9C 00 00 00 50 00 02 00 7A 00 00 00 ........ P...z... +-[05B0] 7A 00 00 00 54 00 02 00 B0 00 00 00 58 00 02 00 z...T... ....X... ++[05B0] 54 00 02 00 B0 00 00 00 58 00 02 00 9C 00 00 00 T....... X....... +-[05C0] 9C 00 00 00 9C 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[05C0] 9C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[05F0] 00 00 00 00 00 00 00 00 31 00 00 00 43 00 4E 00 ........ 1...C.N. ++[05F0] 00 00 00 00 31 00 00 00 43 00 4E 00 3D 00 43 00 ....1... C.N.=.C. +-[0600] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. ++[0600] 6F 00 6E 00 66 00 69 00 67 00 75 00 72 00 61 00 o.n.f.i. g.u.r.a. +-[0610] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. ++[0610] 74 00 69 00 6F 00 6E 00 2C 00 44 00 43 00 3D 00 t.i.o.n. ,.D.C.=. +-[0620] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. ++[0620] 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 s.a.m.b. a.2.0.0. +-[0630] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. ++[0630] 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 8.r.2.,. D.C.=.e. +-[0640] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. ++[0640] 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 x.a.m.p. l.e.,.D. +-[0650] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... ++[0650] 43 00 3D 00 63 00 6F 00 6D 00 00 00 7A 00 00 00 C.=.c.o. m...z... +-[0660] 7A 00 00 00 7A 00 00 00 00 00 00 00 00 00 00 00 z...z... ........ ++[0660] 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 z....... ........ +skipping zero buffer bytes +-[0690] 00 00 00 00 00 00 00 00 20 00 00 00 44 00 43 00 ........ ...D.C. ++[0690] 00 00 00 00 20 00 00 00 44 00 43 00 3D 00 73 00 .... ... D.C.=.s. +-[06A0] 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 =.s.a.m. b.a.2.0. ++[06A0] 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 a.m.b.a. 2.0.0.8. +-[06B0] 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 0.8.r.2. ,.D.C.=. ++[06B0] 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 r.2.,.D. C.=.e.x. +-[06C0] 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 e.x.a.m. p.l.e.,. ++[06C0] 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 a.m.p.l. e.,.D.C. +-[06D0] 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 00 00 D.C.=.c. o.m..... ++[06D0] 3D 00 63 00 6F 00 6D 00 00 00 00 00 B0 00 00 00 =.c.o.m. ........ +-[06E0] B0 00 00 00 B0 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[06E0] B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[0710] 00 00 00 00 00 00 00 00 3B 00 00 00 43 00 4E 00 ........ ;...C.N. ++[0710] 00 00 00 00 3B 00 00 00 43 00 4E 00 3D 00 53 00 ....;... C.N.=.S. +-[0720] 3D 00 53 00 63 00 68 00 64 00 6D 00 61 00 2C 00 =.S.c.h. d.m.a.,. ++[0720] 63 00 68 00 64 00 6D 00 61 00 2C 00 43 00 4E 00 c.h.d.m. a.,.C.N. +-[0730] 43 00 4E 00 3D 00 43 00 6F 00 6E 00 66 00 69 00 C.N.=.C. o.n.f.i. ++[0730] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. +-[0740] 67 00 75 00 72 00 61 00 74 00 69 00 6F 00 6E 00 g.u.r.a. t.i.o.n. ++[0740] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. +-[0750] 2C 00 44 00 43 00 3D 00 73 00 61 00 6D 00 62 00 ,.D.C.=. s.a.m.b. ++[0750] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. +-[0760] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. ++[0760] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. +-[0770] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. ++[0770] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. +-[0780] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. ++[0780] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... +-[0790] 6D 00 00 00 01 00 00 00 B0 00 00 00 5C 00 02 00 m....... ....\... ++[0790] 01 00 00 00 B0 00 00 00 5C 00 02 00 B0 00 00 00 ........ \....... +-[07A0] B0 00 00 00 B0 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[07A0] B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[07C0] 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 ........ ........ ++[07C0] 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 ........ ........ +-[07D0] 00 00 00 00 00 00 00 00 3B 00 00 00 43 00 4E 00 ........ ;...C.N. ++[07D0] 00 00 00 00 3B 00 00 00 43 00 4E 00 3D 00 53 00 ....;... C.N.=.S. +-[07E0] 3D 00 53 00 63 00 68 00 65 00 6D 00 05 84 99 CD =.S.c.h. e.m..... ++[07E0] 63 00 68 00 65 00 6D 00 05 84 99 CD AE 00 4E FF c.h.e.m. ......N. +-[07F0] AE 00 4E FF 3D 00 43 00 6F 00 6E 00 66 00 69 00 ..N.=.C. o.n.f.i. ++[07F0] 3D 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 =.C.o.n. f.i.g.u. +-[0800] 67 00 75 00 72 00 61 00 74 00 69 00 6F 00 6E 00 g.u.r.a. t.i.o.n. ++[0800] 72 00 61 00 74 00 69 00 6F 00 6E 00 2C 00 44 00 r.a.t.i. o.n.,.D. +-[0810] 2C 00 44 00 43 00 3D 00 73 00 61 00 6D 00 62 00 ,.D.C.=. s.a.m.b. ++[0810] 43 00 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 C.=.s.a. m.b.a.2. +-[0820] 61 00 32 00 30 00 30 00 38 00 72 00 32 00 2C 00 a.2.0.0. 8.r.2.,. ++[0820] 30 00 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 0.0.8.r. 2.,.D.C. +-[0830] 44 00 43 00 3D 00 65 00 78 00 61 00 6D 00 70 00 D.C.=.e. x.a.m.p. ++[0830] 3D 00 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 =.e.x.a. m.p.l.e. +-[0840] 6C 00 65 00 2C 00 44 00 43 00 3D 00 63 00 6F 00 l.e.,.D. C.=.c.o. ++[0840] 2C 00 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 ,.D.C.=. c.o.m... +-[0850] 6D 00 00 00 01 00 00 00 7A 00 00 00 60 00 02 00 m....... z...`... ++[0850] 01 00 00 00 7A 00 00 00 60 00 02 00 7A 00 00 00 ....z... `...z... +-[0860] 7A 00 00 00 7A 00 00 00 00 00 00 00 00 00 00 00 z...z... ........ ++[0860] 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 z....... ........ +skipping zero buffer bytes +-[0890] 00 00 00 00 00 00 00 00 20 00 00 00 44 00 43 00 ........ ...D.C. ++[0890] 00 00 00 00 20 00 00 00 44 00 43 00 3D 00 73 00 .... ... D.C.=.s. +-[08A0] 3D 00 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 =.s.a.m. b.a.2.0. ++[08A0] 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 a.m.b.a. 2.0.0.8. +-[08B0] 30 00 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 0.8.r.2. ,.D.C.=. ++[08B0] 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 r.2.,.D. C.=.e.x. +-[08C0] 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 e.x.a.m. p.l.e.,. ++[08C0] 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 a.m.p.l. e.,.D.C. +-[08D0] 44 00 43 00 3D 00 63 00 6F 00 6D 00 00 00 00 00 D.C.=.c. o.m..... ++[08D0] 3D 00 63 00 6F 00 6D 00 00 00 00 00 01 00 00 00 =.c.o.m. ........ +-[08E0] 01 00 00 00 04 00 00 00 64 00 02 00 04 00 00 00 ........ d....... ++[08E0] 04 00 00 00 64 00 02 00 04 00 00 00 04 00 00 00 ....d... ........ +-[08F0] 04 00 00 00 01 00 00 00 04 00 00 00 68 00 02 00 ........ ....h... ++[08F0] 01 00 00 00 04 00 00 00 68 00 02 00 04 00 00 00 ........ h....... +-[0900] 04 00 00 00 00 00 00 02 01 00 00 00 B4 00 00 00 ........ ........ ++[0900] 00 00 00 02 01 00 00 00 B4 00 00 00 6C 00 02 00 ........ ....l... +-[0910] 6C 00 02 00 B4 00 00 00 B4 00 00 00 00 00 00 00 l....... ........ ++[0910] B4 00 00 00 B4 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +-[0920] 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 ........ ........ ++[0920] 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes +-[0940] 00 00 00 00 00 00 00 00 00 00 00 00 3D 00 00 00 ........ ....=... ++[0940] 00 00 00 00 00 00 00 00 3D 00 00 00 43 00 4E 00 ........ =...C.N. +-[0950] 43 00 4E 00 3D 00 73 00 6D 00 62 00 74 00 6F 00 C.N.=.s. m.b.t.o. ++[0950] 3D 00 73 00 6D 00 62 00 74 00 6F 00 72 00 74 00 =.s.m.b. t.o.r.t. +-[0960] 72 00 74 00 75 00 72 00 65 00 64 00 63 00 2C 00 r.t.u.r. e.d.c.,. ++[0960] 75 00 72 00 65 00 64 00 63 00 2C 00 43 00 4E 00 u.r.e.d. c.,.C.N. +-[0970] 43 00 4E 00 3D 00 43 00 6F 00 6D 00 70 00 75 00 C.N.=.C. o.m.p.u. ++[0970] 3D 00 43 00 6F 00 6D 00 70 00 75 00 74 00 65 00 =.C.o.m. p.u.t.e. +-[0980] 74 00 65 00 72 00 73 00 2C 00 44 00 43 00 3D 00 t.e.r.s. ,.D.C.=. ++[0980] 72 00 73 00 2C 00 44 00 43 00 3D 00 73 00 61 00 r.s.,.D. C.=.s.a. +-[0990] 73 00 61 00 6D 00 62 00 61 00 32 00 30 00 30 00 s.a.m.b. a.2.0.0. ++[0990] 6D 00 62 00 61 00 32 00 30 00 30 00 38 00 72 00 m.b.a.2. 0.0.8.r. +-[09A0] 38 00 72 00 32 00 2C 00 44 00 43 00 3D 00 65 00 8.r.2.,. D.C.=.e. ++[09A0] 32 00 2C 00 44 00 43 00 3D 00 65 00 78 00 61 00 2.,.D.C. =.e.x.a. +-[09B0] 78 00 61 00 6D 00 70 00 6C 00 65 00 2C 00 44 00 x.a.m.p. l.e.,.D. ++[09B0] 6D 00 70 00 6C 00 65 00 2C 00 44 00 43 00 3D 00 m.p.l.e. ,.D.C.=. +-[09C0] 43 00 3D 00 63 00 6F 00 6D 00 EB 00 01 3D 01 B1 C.=.c.o. m....=.. ++[09C0] 63 00 6F 00 6D 00 EB 00 c.o.m... +-[09D0] 01 69 3B 12 8D ED 27 92 69 1B 4B 71 67 85 6D 05 .i;...'. i.Kqg.m. ++[09D0] EMPTY BLOCK +-[09E0] 44 5A 6A 6D AA 16 29 37 49 40 CD F5 06 AF 76 91 DZjm..)7 I@....v. ++[09E0] EMPTY BLOCK +-[09F0] 48 90 24 38 81 8A A2 70 0E 57 68 H.$8...p .Wh ++[09F0] EMPTY BLOCK dump OK diff --git a/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt b/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt index 302ccb401ef9..f32efee8d5c4 100644 --- a/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt +++ b/source4/librpc/tests/fuzzed_drsuapi_DsReplicaAttribute.txt @@ -31,4 +31,30 @@ pull returned Success WARNING! orig bytes:203 validated pushed bytes:24 WARNING! orig and validated differ at byte 0x08 (8) WARNING! orig byte[0x08] = 0x01 validated byte[0x08] = 0x00 +-[0000] 00 00 00 00 01 00 00 00 01 00 00 80 01 00 00 00 ........ ........ ++[0000] 00 00 00 00 01 00 00 00 00 00 02 00 01 00 00 00 ........ ........ +-[0010] 01 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 00 ........ ........ ++[0010] 00 00 00 00 00 00 00 00 ........ +-[0020] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[0020] EMPTY BLOCK +-[0030] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[0030] EMPTY BLOCK +-[0040] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[0040] EMPTY BLOCK +-[0050] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[0050] EMPTY BLOCK +-[0060] 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .@...... ........ ++[0060] EMPTY BLOCK +-[0070] 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 00 ........ ...@.... ++[0070] EMPTY BLOCK +-[0080] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[0080] EMPTY BLOCK +-[0090] 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 00 ........ ...@.... ++[0090] EMPTY BLOCK +-[00A0] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ ++[00A0] EMPTY BLOCK +-[00B0] 00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 .....@.. ........ ++[00B0] EMPTY BLOCK +-[00C0] 00 00 00 00 00 00 00 00 00 00 00 ........ ... ++[00C0] EMPTY BLOCK dump OK diff --git a/source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt b/source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt index 8dbe6e6dac28..7ce507c93469 100644 --- a/source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt +++ b/source4/librpc/tests/fuzzed_ntlmssp-AUTHENTICATE_MESSAGE.txt @@ -131,4 +131,37 @@ pull returned Success WARNING! orig bytes:260 validated pushed bytes:72 WARNING! orig and validated differ at byte 0x00 (0) WARNING! orig byte[0x00] = 0x00 validated byte[0x00] = 0x4E +-[0000] 00 0E 00 00 00 00 04 00 00 00 00 00 00 00 00 00 ........ ........ ++[0000] 4E 54 4C 4D 53 53 50 00 03 00 00 00 00 00 00 00 NTLMSSP. ........ +skipping zero buffer bytes +-[0020] 00 00 00 00 00 00 01 00 00 00 00 00 33 39 00 00 ........ ....39.. ++[0020] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +-[0030] 00 00 00 00 00 01 00 00 00 00 00 00 00 00 FF FE ........ ........ ++[0030] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FE ........ ........ +-[0040] 00 00 00 00 00 00 00 00 04 33 32 31 35 32 31 31 ........ .3215211 ++[0040] 00 00 00 00 00 00 00 00 ........ +-[0050] 35 30 32 36 33 31 34 36 38 37 FE FE FE FE FE FE 50263146 87...... ++[0050] EMPTY BLOCK +-[0060] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[0060] EMPTY BLOCK +-[0070] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[0070] EMPTY BLOCK +-[0080] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[0080] EMPTY BLOCK +-[0090] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[0090] EMPTY BLOCK +-[00A0] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[00A0] EMPTY BLOCK +-[00B0] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[00B0] EMPTY BLOCK +-[00C0] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[00C0] EMPTY BLOCK +-[00D0] FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE FE ........ ........ ++[00D0] EMPTY BLOCK +-[00E0] FE FE FE FE FE FE FE FE FE FE FE FE FE E7 E4 F6 ........ ........ ++[00E0] EMPTY BLOCK +-[00F0] 75 E9 01 F2 F7 D6 DD BA DF DD 6A C3 44 37 33 39 u....... ..j.D739 ++[00F0] EMPTY BLOCK +-[0100] 00 00 00 00 .... ++[0100] EMPTY BLOCK dump OK diff --git a/source4/librpc/tests/krb5pac_upn_dns_info_ex.txt b/source4/librpc/tests/krb5pac_upn_dns_info_ex.txt index 9747d1b6d3a4..5deec5452e97 100644 --- a/source4/librpc/tests/krb5pac_upn_dns_info_ex.txt +++ b/source4/librpc/tests/krb5pac_upn_dns_info_ex.txt @@ -217,4 +217,65 @@ WARNING! orig bytes:824 validated pushed bytes:832 WARNING! orig pulled bytes:824 validated pulled bytes:832 WARNING! orig and validated differ at byte 0x2C (44) WARNING! orig byte[0x2C] = 0xA8 validated byte[0x2C] = 0xB0 + [0000] 06 00 00 00 00 00 00 00 01 00 00 00 D0 01 00 00 ........ ........ + [0010] 68 00 00 00 00 00 00 00 0A 00 00 00 1C 00 00 00 h....... ........ +-[0020] 38 02 00 00 00 00 00 00 0C 00 00 00 A8 00 00 00 8....... ........ ++[0020] 38 02 00 00 00 00 00 00 0C 00 00 00 B0 00 00 00 8....... ........ + [0030] 58 02 00 00 00 00 00 00 06 00 00 00 14 00 00 00 X....... ........ +-[0040] 00 03 00 00 00 00 00 00 07 00 00 00 10 00 00 00 ........ ........ ++[0040] 08 03 00 00 00 00 00 00 07 00 00 00 10 00 00 00 ........ ........ +-[0050] 18 03 00 00 00 00 00 00 10 00 00 00 10 00 00 00 ........ ........ ++[0050] 20 03 00 00 00 00 00 00 10 00 00 00 10 00 00 00 ....... ........ +-[0060] 28 03 00 00 00 00 00 00 01 10 08 00 CC CC CC CC (....... ........ ++[0060] 30 03 00 00 00 00 00 00 01 10 08 00 CC CC CC CC 0....... ........ + [0070] C0 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 ........ ........ + [0080] 00 00 00 00 FF FF FF FF FF FF FF 7F FF FF FF FF ........ ........ + [0090] FF FF FF 7F BA 4C 70 2C D7 BF D7 01 BA 0C DA 56 .....Lp, .......V + [00A0] A0 C0 D7 01 BA CC C9 21 D8 E0 D7 01 12 00 12 00 .......! ........ + [00B0] 04 00 02 00 00 00 00 00 08 00 02 00 00 00 00 00 ........ ........ + [00C0] 0C 00 02 00 00 00 00 00 10 00 02 00 00 00 00 00 ........ ........ + [00D0] 14 00 02 00 00 00 00 00 18 00 02 00 00 00 00 00 ........ ........ + [00E0] 8E 04 00 00 01 02 00 00 01 00 00 00 1C 00 02 00 ........ ........ + [00F0] 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ........ + [0100] 00 00 00 00 0E 00 10 00 20 00 02 00 16 00 18 00 ........ ....... + [0110] 24 00 02 00 28 00 02 00 00 00 00 00 00 00 00 00 $...(... ........ + [0120] 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes + [0140] 01 00 00 00 2C 00 02 00 00 00 00 00 00 00 00 00 ....,... ........ + [0150] 00 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 ........ ........ + [0160] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. + [0170] 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r....... ........ +skipping zero buffer bytes + [01B0] 01 00 00 00 01 02 00 00 07 00 00 00 08 00 00 00 ........ ........ + [01C0] 00 00 00 00 07 00 00 00 4C 00 4F 00 43 00 41 00 ........ L.O.C.A. + [01D0] 4C 00 44 00 43 00 00 00 0C 00 00 00 00 00 00 00 L.D.C... ........ + [01E0] 0B 00 00 00 53 00 41 00 4D 00 42 00 41 00 44 00 ....S.A. M.B.A.D. + [01F0] 4F 00 4D 00 41 00 49 00 4E 00 00 00 04 00 00 00 O.M.A.I. N....... + [0200] 01 04 00 00 00 00 00 05 15 00 00 00 B6 7E F5 F4 ........ .....~.. + [0210] C0 31 A2 3A E7 CA B7 54 01 00 00 00 30 00 02 00 .1.:...T ....0... + [0220] 07 00 00 00 01 00 00 00 01 01 00 00 00 00 00 12 ........ ........ + [0230] 01 00 00 00 00 00 00 00 80 B7 21 2C D7 BF D7 01 ........ ..!,.... + [0240] 12 00 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 ..t.s.t. t.k.t.u. + [0250] 73 00 72 00 00 00 00 00 36 00 18 00 22 00 50 00 s.r..... 6...".P. +-[0260] 03 00 00 00 12 00 78 00 1C 00 8A 00 00 00 00 00 ......x. ........ ++[0260] 03 00 00 00 12 00 78 00 1C 00 90 00 00 00 00 00 ......x. ........ + [0270] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. + [0280] 72 00 40 00 73 00 61 00 6D 00 62 00 61 00 2E 00 r.@.s.a. m.b.a... + [0290] 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 2E 00 e.x.a.m. p.l.e... + [02A0] 63 00 6F 00 6D 00 00 00 53 00 41 00 4D 00 42 00 c.o.m... S.A.M.B. + [02B0] 41 00 2E 00 45 00 58 00 41 00 4D 00 50 00 4C 00 A...E.X. A.M.P.L. + [02C0] 45 00 2E 00 43 00 4F 00 4D 00 00 00 00 00 00 00 E...C.O. M....... + [02D0] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. +-[02E0] 72 00 01 05 00 00 00 00 00 05 15 00 00 00 B6 7E r....... .......~ ++[02E0] 72 00 00 00 00 00 00 00 01 05 00 00 00 00 00 05 r....... ........ +-[02F0] F5 F4 C0 31 A2 3A E7 CA B7 54 8E 04 00 00 00 00 ...1.:.. .T...... ++[02F0] 15 00 00 00 B6 7E F5 F4 C0 31 A2 3A E7 CA B7 54 .....~.. .1.:...T +-[0300] 76 FF FF FF 2B 39 6A 8C 76 29 DA 8D 63 C0 95 57 v...+9j. v)..c..W ++[0300] 8E 04 00 00 00 00 00 00 76 FF FF FF 2B 39 6A 8C ........ v...+9j. +-[0310] 19 10 6E CE 00 00 00 00 10 00 00 00 5A D4 78 FD ..n..... ....Z.x. ++[0310] 76 29 DA 8D 63 C0 95 57 19 10 6E CE 00 00 00 00 v)..c..W ..n..... +-[0320] 1B F0 F6 DC B7 45 65 56 10 00 00 00 78 48 2F 88 .....EeV ....xH/. ++[0320] 10 00 00 00 5A D4 78 FD 1B F0 F6 DC B7 45 65 56 ....Z.x. .....EeV +-[0330] 18 AA 0B 3F ED 34 DF 4A ...?.4.J ++[0330] 10 00 00 00 78 48 2F 88 18 AA 0B 3F ED 34 DF 4A ....xH/. ...?.4.J dump OK diff --git a/source4/librpc/tests/krb5pac_upn_dns_info_ex_not_supported.txt b/source4/librpc/tests/krb5pac_upn_dns_info_ex_not_supported.txt index d29832ede499..088f48b1cfb0 100644 --- a/source4/librpc/tests/krb5pac_upn_dns_info_ex_not_supported.txt +++ b/source4/librpc/tests/krb5pac_upn_dns_info_ex_not_supported.txt @@ -210,4 +210,73 @@ WARNING! orig bytes:824 validated pushed bytes:768 WARNING! orig pulled bytes:824 validated pulled bytes:768 WARNING! orig and validated differ at byte 0x2C (44) WARNING! orig byte[0x2C] = 0xA8 validated byte[0x2C] = 0x70 + [0000] 06 00 00 00 00 00 00 00 01 00 00 00 D0 01 00 00 ........ ........ + [0010] 68 00 00 00 00 00 00 00 0A 00 00 00 1C 00 00 00 h....... ........ +-[0020] 38 02 00 00 00 00 00 00 0C 00 00 00 A8 00 00 00 8....... ........ ++[0020] 38 02 00 00 00 00 00 00 0C 00 00 00 70 00 00 00 8....... ....p... + [0030] 58 02 00 00 00 00 00 00 06 00 00 00 14 00 00 00 X....... ........ +-[0040] 00 03 00 00 00 00 00 00 07 00 00 00 10 00 00 00 ........ ........ ++[0040] C8 02 00 00 00 00 00 00 07 00 00 00 10 00 00 00 ........ ........ +-[0050] 18 03 00 00 00 00 00 00 10 00 00 00 10 00 00 00 ........ ........ ++[0050] E0 02 00 00 00 00 00 00 10 00 00 00 10 00 00 00 ........ ........ +-[0060] 28 03 00 00 00 00 00 00 01 10 08 00 CC CC CC CC (....... ........ ++[0060] F0 02 00 00 00 00 00 00 01 10 08 00 CC CC CC CC ........ ........ + [0070] C0 01 00 00 00 00 00 00 00 00 02 00 00 00 00 00 ........ ........ + [0080] 00 00 00 00 FF FF FF FF FF FF FF 7F FF FF FF FF ........ ........ + [0090] FF FF FF 7F BA 4C 70 2C D7 BF D7 01 BA 0C DA 56 .....Lp, .......V + [00A0] A0 C0 D7 01 BA CC C9 21 D8 E0 D7 01 12 00 12 00 .......! ........ + [00B0] 04 00 02 00 00 00 00 00 08 00 02 00 00 00 00 00 ........ ........ + [00C0] 0C 00 02 00 00 00 00 00 10 00 02 00 00 00 00 00 ........ ........ + [00D0] 14 00 02 00 00 00 00 00 18 00 02 00 00 00 00 00 ........ ........ + [00E0] 8E 04 00 00 01 02 00 00 01 00 00 00 1C 00 02 00 ........ ........ + [00F0] 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....... ........ + [0100] 00 00 00 00 0E 00 10 00 20 00 02 00 16 00 18 00 ........ ....... + [0110] 24 00 02 00 28 00 02 00 00 00 00 00 00 00 00 00 $...(... ........ + [0120] 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +skipping zero buffer bytes + [0140] 01 00 00 00 2C 00 02 00 00 00 00 00 00 00 00 00 ....,... ........ + [0150] 00 00 00 00 09 00 00 00 00 00 00 00 09 00 00 00 ........ ........ + [0160] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. + [0170] 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r....... ........ +skipping zero buffer bytes + [01B0] 01 00 00 00 01 02 00 00 07 00 00 00 08 00 00 00 ........ ........ + [01C0] 00 00 00 00 07 00 00 00 4C 00 4F 00 43 00 41 00 ........ L.O.C.A. + [01D0] 4C 00 44 00 43 00 00 00 0C 00 00 00 00 00 00 00 L.D.C... ........ + [01E0] 0B 00 00 00 53 00 41 00 4D 00 42 00 41 00 44 00 ....S.A. M.B.A.D. + [01F0] 4F 00 4D 00 41 00 49 00 4E 00 00 00 04 00 00 00 O.M.A.I. N....... + [0200] 01 04 00 00 00 00 00 05 15 00 00 00 B6 7E F5 F4 ........ .....~.. + [0210] C0 31 A2 3A E7 CA B7 54 01 00 00 00 30 00 02 00 .1.:...T ....0... + [0220] 07 00 00 00 01 00 00 00 01 01 00 00 00 00 00 12 ........ ........ + [0230] 01 00 00 00 00 00 00 00 80 B7 21 2C D7 BF D7 01 ........ ..!,.... + [0240] 12 00 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 ..t.s.t. t.k.t.u. +-[0250] 73 00 72 00 00 00 00 00 36 00 18 00 22 00 50 00 s.r..... 6...".P. ++[0250] 73 00 72 00 00 00 00 00 36 00 10 00 22 00 48 00 s.r..... 6...".H. +-[0260] 01 00 00 00 12 00 78 00 1C 00 8A 00 00 00 00 00 ......x. ........ ++[0260] 01 00 00 00 00 00 00 00 74 00 73 00 74 00 74 00 ........ t.s.t.t. +-[0270] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. ++[0270] 6B 00 74 00 75 00 73 00 72 00 40 00 73 00 61 00 k.t.u.s. r.@.s.a. +-[0280] 72 00 40 00 73 00 61 00 6D 00 62 00 61 00 2E 00 r.@.s.a. m.b.a... ++[0280] 6D 00 62 00 61 00 2E 00 65 00 78 00 61 00 6D 00 m.b.a... e.x.a.m. +-[0290] 65 00 78 00 61 00 6D 00 70 00 6C 00 65 00 2E 00 e.x.a.m. p.l.e... ++[0290] 70 00 6C 00 65 00 2E 00 63 00 6F 00 6D 00 00 00 p.l.e... c.o.m... +-[02A0] 63 00 6F 00 6D 00 00 00 53 00 41 00 4D 00 42 00 c.o.m... S.A.M.B. ++[02A0] 53 00 41 00 4D 00 42 00 41 00 2E 00 45 00 58 00 S.A.M.B. A...E.X. +-[02B0] 41 00 2E 00 45 00 58 00 41 00 4D 00 50 00 4C 00 A...E.X. A.M.P.L. ++[02B0] 41 00 4D 00 50 00 4C 00 45 00 2E 00 43 00 4F 00 A.M.P.L. E...C.O. +-[02C0] 45 00 2E 00 43 00 4F 00 4D 00 00 00 00 00 00 00 E...C.O. M....... ++[02C0] 4D 00 00 00 00 00 00 00 76 FF FF FF 2B 39 6A 8C M....... v...+9j. +-[02D0] 74 00 73 00 74 00 74 00 6B 00 74 00 75 00 73 00 t.s.t.t. k.t.u.s. ++[02D0] 76 29 DA 8D 63 C0 95 57 19 10 6E CE 00 00 00 00 v)..c..W ..n..... +-[02E0] 72 00 01 05 00 00 00 00 00 05 15 00 00 00 B6 7E r....... .......~ ++[02E0] 10 00 00 00 5A D4 78 FD 1B F0 F6 DC B7 45 65 56 ....Z.x. .....EeV +-[02F0] F5 F4 C0 31 A2 3A E7 CA B7 54 8E 04 00 00 00 00 ...1.:.. .T...... ++[02F0] 10 00 00 00 78 48 2F 88 18 AA 0B 3F ED 34 DF 4A ....xH/. ...?.4.J +-[0300] 76 FF FF FF 2B 39 6A 8C 76 29 DA 8D 63 C0 95 57 v...+9j. v)..c..W ++[0300] EMPTY BLOCK +-[0310] 19 10 6E CE 00 00 00 00 10 00 00 00 5A D4 78 FD ..n..... ....Z.x. ++[0310] EMPTY BLOCK +-[0320] 1B F0 F6 DC B7 45 65 56 10 00 00 00 78 48 2F 88 .....EeV ....xH/. ++[0320] EMPTY BLOCK +-[0330] 18 AA 0B 3F ED 34 DF 4A ...?.4.J ++[0330] EMPTY BLOCK dump OK -- 2.25.1 From 42d6aa8bd86ff2edb9d92e02221e1ee5cd3bdc05 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Jan 2022 01:09:23 +0100 Subject: [PATCH 6/8] s4:torture/ndr: demonstrate the ndr_push_string(STR_NOTERM|REMAINING) of "" is wrong convert_string_talloc() never returns a string with len=0 and always implies zero termination byte(s). For ndr_push_string this is unexpected as we need to be compatible on the wire and push 0 bytes for an empty string. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit 8da26cb6725b5d853ab481a348a3a672966715b5) --- selftest/knownfail.d/ndr_string | 2 ++ source4/torture/ndr/string.c | 30 +++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 selftest/knownfail.d/ndr_string diff --git a/selftest/knownfail.d/ndr_string b/selftest/knownfail.d/ndr_string new file mode 100644 index 000000000000..f4c864eb383d --- /dev/null +++ b/selftest/knownfail.d/ndr_string @@ -0,0 +1,2 @@ +^samba4.local.ndr.ndr_string.ndr_string +^samba4.local.ndr.system.iconv.ndr_string.ndr_string diff --git a/source4/torture/ndr/string.c b/source4/torture/ndr/string.c index a53acaa5b911..8c949455acf9 100644 --- a/source4/torture/ndr/string.c +++ b/source4/torture/ndr/string.c @@ -19,6 +19,7 @@ static const char utf8[] = { 0x6b, 0x61, 0x6d, 0x65, 0x6c, 0xc3, 0xa5, /* purely for convenience */ static int fl_ascii_null = LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM; +static int fl_ascii_noterm = LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_REMAINING; static int fl_utf8_null = LIBNDR_FLAG_STR_UTF8|LIBNDR_FLAG_STR_NULLTERM; static int fl_raw8_null = LIBNDR_FLAG_STR_RAW8|LIBNDR_FLAG_STR_NULLTERM; @@ -40,20 +41,31 @@ test_ndr_push_string (struct torture_context *tctx, const char *string, } mem_ctx = talloc_named (NULL, 0, "test_ndr_push_string"); - ndr = talloc_zero (mem_ctx, struct ndr_push); + ndr = ndr_push_init_ctx(mem_ctx); ndr_set_flags (&ndr->flags, flags); err = ndr_push_string (ndr, NDR_SCALARS, string); - torture_assert(tctx, err == exp_ndr_err, + torture_assert_ndr_err_equal(tctx, err, exp_ndr_err, "ndr_push_string: unexpected return code"); if (exp_ndr_err == NDR_ERR_SUCCESS) { + uint32_t expected_offset = strlen(string); + + if (flags & LIBNDR_FLAG_STR_NULLTERM) { + expected_offset += 1; + } + + torture_assert_int_equal(tctx, + ndr->offset, expected_offset, + "ndr_push_string: invalid length"); + torture_assert(tctx, ndr->data != NULL, "ndr_push_string: succeeded but NULL data"); torture_assert(tctx, strcmp_pass == !strcmp(string, (char *)ndr->data), "ndr_push_string: post-push strcmp"); + } talloc_free(mem_ctx); @@ -86,7 +98,7 @@ test_ndr_pull_string (struct torture_context *tctx, const char *string, ndr_set_flags (&ndr->flags, flags); err = ndr_pull_string (ndr, NDR_SCALARS, &result); - torture_assert(tctx, err == exp_ndr_err, + torture_assert_ndr_err_equal(tctx, err, exp_ndr_err, "ndr_pull_string: unexpected return code"); if (exp_ndr_err == NDR_ERR_SUCCESS) { @@ -111,6 +123,18 @@ torture_ndr_string(struct torture_context *torture) test_ndr_push_string (torture, ascii, fl_ascii_null, NDR_ERR_SUCCESS, true), "test_ndr_push_string(ASCII, STR_ASCII|STR_NULL)"); + torture_assert(torture, + test_ndr_push_string (torture, ascii, fl_ascii_noterm, + NDR_ERR_SUCCESS, true), + "test_ndr_push_string(ASCII, STR_ASCII|STR_NOTERM|REMAINING)"); + torture_assert(torture, + test_ndr_push_string (torture, "", fl_ascii_null, + NDR_ERR_SUCCESS, true), + "test_ndr_push_string('', STR_ASCII|STR_NULL)"); + torture_assert(torture, + test_ndr_push_string (torture, "", fl_ascii_noterm, + NDR_ERR_SUCCESS, true), + "test_ndr_push_string('', STR_ASCII|STR_NOTERM|REMAINING)"); torture_assert(torture, test_ndr_push_string (torture, utf8, fl_utf8_null, NDR_ERR_SUCCESS, true), -- 2.25.1 From 44cb69a9c3d943592e618d1f476e75a6b9571297 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 3 Nov 2021 13:57:50 +0100 Subject: [PATCH 7/8] librpc/ndr: let ndr_push_string() let s_len == 0 result in d_len = 0 convert_string_talloc_handle() tries to play an the safe side and always returns a null terminated array. But for NDR we need to be correct on the wire... BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider (cherry picked from commit 43648e95a514020da4c7efa62df55d0882e3db85) --- librpc/ndr/ndr_string.c | 5 ++++- selftest/knownfail.d/blackbox.ndrdump | 1 + selftest/knownfail.d/ndr_string | 2 -- 3 files changed, 5 insertions(+), 3 deletions(-) create mode 100644 selftest/knownfail.d/blackbox.ndrdump delete mode 100644 selftest/knownfail.d/ndr_string diff --git a/librpc/ndr/ndr_string.c b/librpc/ndr/ndr_string.c index 77efb3e98481..2b3737ce2581 100644 --- a/librpc/ndr/ndr_string.c +++ b/librpc/ndr/ndr_string.c @@ -236,7 +236,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags, s_len++; } - if (!do_convert) { + if (s_len == 0) { + d_len = 0; + dest = (uint8_t *)talloc_strdup(ndr, ""); + } else if (!do_convert) { d_len = s_len; dest = (uint8_t *)talloc_strndup(ndr, s, s_len); } else if (!convert_string_talloc(ndr, CH_UNIX, chset, s, s_len, diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump new file mode 100644 index 000000000000..8131b070b374 --- /dev/null +++ b/selftest/knownfail.d/blackbox.ndrdump @@ -0,0 +1 @@ +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_NULL_struct_ntlmssp_CHALLENGE_MESSAGE diff --git a/selftest/knownfail.d/ndr_string b/selftest/knownfail.d/ndr_string deleted file mode 100644 index f4c864eb383d..000000000000 --- a/selftest/knownfail.d/ndr_string +++ /dev/null @@ -1,2 +0,0 @@ -^samba4.local.ndr.ndr_string.ndr_string -^samba4.local.ndr.system.iconv.ndr_string.ndr_string -- 2.25.1 From 409a5f7ef5a35a82d3eb24a539bb69c4f06ffe5f Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Fri, 21 Jan 2022 20:42:45 +0100 Subject: [PATCH 8/8] blackbox.ndrdump: fix test_ndrdump_fuzzed_NULL_struct_ntlmssp_CHALLENGE_MESSAGE test This actually reveals that ndr_push_string() for TargetName="" was failing before because it resulted in 1 byte for a subcontext with TargetLen=0. This is fixed now and we no longer expect ndrdump to exit with 1. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14956 Signed-off-by: Stefan Metzmacher Reviewed-by: Andreas Schneider Autobuild-User(master): Stefan Metzmacher Autobuild-Date(master): Mon Jan 24 16:18:34 UTC 2022 on sn-devel-184 (cherry picked from commit 12464bd4c222d996aac6d6250b7945d63f20f4bc) --- python/samba/tests/blackbox/ndrdump.py | 5 +- selftest/knownfail.d/blackbox.ndrdump | 1 - .../fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt | 52 +++++++++++++++++-- 3 files changed, 51 insertions(+), 7 deletions(-) delete mode 100644 selftest/knownfail.d/blackbox.ndrdump diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py index a1785685ab92..7214ea5bb93d 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -500,10 +500,9 @@ dump OK def test_ndrdump_fuzzed_NULL_struct_ntlmssp_CHALLENGE_MESSAGE(self): expected = open(self.data_path("fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt")).read().encode('utf8') try: - actual = self.check_exit_code( + actual = self.check_output( "ndrdump ntlmssp CHALLENGE_MESSAGE struct --validate --input " +\ - "'AAAACwIAAAAAJwIAAAAAAAcAAAAAAAAAAIAbhG8uyk9dAL0mQE73MAAAAAAAAAAA' --base64-input", - 1) + "'AAAACwIAAAAAJwIAAAAAAAcAAAAAAAAAAIAbhG8uyk9dAL0mQE73MAAAAAAAAAAA' --base64-input") except BlackboxProcessError as e: self.fail(e) diff --git a/selftest/knownfail.d/blackbox.ndrdump b/selftest/knownfail.d/blackbox.ndrdump deleted file mode 100644 index 8131b070b374..000000000000 --- a/selftest/knownfail.d/blackbox.ndrdump +++ /dev/null @@ -1 +0,0 @@ -^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_NULL_struct_ntlmssp_CHALLENGE_MESSAGE diff --git a/source4/librpc/tests/fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt b/source4/librpc/tests/fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt index 90879ad923ef..450c6532d107 100644 --- a/source4/librpc/tests/fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt +++ b/source4/librpc/tests/fuzzed_ntlmssp-CHALLENGE_MESSAGE.txt @@ -38,6 +38,52 @@ pull returned Success TargetInfoLen : 0x0000 (0) TargetInfoMaxLen : 0x0000 (0) TargetInfo : NULL -ndr_push_subcontext_end: ndr_push_error(Subcontext Error): Bad subcontext (PUSH) content_size 1 is larger than size_is(0) at ../../librpc/ndr/ndr.c:901 -push returned Subcontext Error -validate push FAILED +push returned Success +pull returned Success + CHALLENGE_MESSAGE: struct CHALLENGE_MESSAGE + Signature : 'NTLMSSP' + MessageType : NtLmChallenge (0x2) + TargetNameLen : 0x0000 (0) + TargetNameMaxLen : 0x0000 (0) + TargetName : * + TargetName : '' + NegotiateFlags : 0x00000000 (0) + 0: NTLMSSP_NEGOTIATE_UNICODE + 0: NTLMSSP_NEGOTIATE_OEM + 0: NTLMSSP_REQUEST_TARGET + 0: NTLMSSP_NEGOTIATE_SIGN + 0: NTLMSSP_NEGOTIATE_SEAL + 0: NTLMSSP_NEGOTIATE_DATAGRAM + 0: NTLMSSP_NEGOTIATE_LM_KEY + 0: NTLMSSP_NEGOTIATE_NETWARE + 0: NTLMSSP_NEGOTIATE_NTLM + 0: NTLMSSP_NEGOTIATE_NT_ONLY + 0: NTLMSSP_ANONYMOUS + 0: NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED + 0: NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED + 0: NTLMSSP_NEGOTIATE_THIS_IS_LOCAL_CALL + 0: NTLMSSP_NEGOTIATE_ALWAYS_SIGN + 0: NTLMSSP_TARGET_TYPE_DOMAIN + 0: NTLMSSP_TARGET_TYPE_SERVER + 0: NTLMSSP_TARGET_TYPE_SHARE + 0: NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY + 0: NTLMSSP_NEGOTIATE_IDENTIFY + 0: NTLMSSP_REQUEST_NON_NT_SESSION_KEY + 0: NTLMSSP_NEGOTIATE_TARGET_INFO + 0: NTLMSSP_NEGOTIATE_VERSION + 0: NTLMSSP_NEGOTIATE_128 + 0: NTLMSSP_NEGOTIATE_KEY_EXCH + 0: NTLMSSP_NEGOTIATE_56 + ServerChallenge : 00801b846f2eca4f + Reserved : 5d00bd26404ef730 + TargetInfoLen : 0x0000 (0) + TargetInfoMaxLen : 0x0000 (0) + TargetInfo : NULL +WARNING! orig and validated differ at byte 0x00 (0) +WARNING! orig byte[0x00] = 0x00 validated byte[0x00] = 0x4E +-[0000] 00 00 00 0B 02 00 00 00 00 27 02 00 00 00 00 00 ........ .'...... ++[0000] 4E 54 4C 4D 53 53 50 00 02 00 00 00 00 00 00 00 NTLMSSP. ........ +-[0010] 07 00 00 00 00 00 00 00 00 80 1B 84 6F 2E CA 4F ........ ....o..O ++[0010] 30 00 00 00 00 00 00 00 00 80 1B 84 6F 2E CA 4F 0....... ....o..O + [0020] 5D 00 BD 26 40 4E F7 30 00 00 00 00 00 00 00 00 ]..&@N.0 ........ +dump OK -- 2.25.1