The Samba-Bugzilla – Attachment 17125 Details for
Bug 14956
ndr_push_string() adds implicit termination for STR_NOTERM|REMAINING empty strings
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patches for v4-14-test
tmp414.diff.txt (text/plain), 80.86 KB, created by
Stefan Metzmacher
on 2022-01-24 16:51:01 UTC
(
hide
)
Description:
Patches for v4-14-test
Filename:
MIME Type:
Creator:
Stefan Metzmacher
Created:
2022-01-24 16:51:01 UTC
Size:
80.86 KB
patch
obsolete
>From bf623bd287c07e9dac93d5a017a115aedb02df30 Mon Sep 17 00:00:00 2001 >From: Stefan Metzmacher <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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<len; i++) { >+ if (i == 8) { >+ cb(" ", private_data); >+ } >+ print_asc_cb(&buf[i], 1, cb, private_data); >+ } >+ >+ cb("\n", private_data); >+} >+ > /** > * Write dump of binary data to a callback > */ >@@ -491,73 +533,30 @@ void dump_data_cb(const uint8_t *buf, int len, > { > int i=0; > bool skipped = false; >- char tmp[16]; > > if (len<=0) return; > >- for (i=0;i<len;) { >- >- if (i%16 == 0) { >- if ((omit_zero_bytes == true) && >- (i > 0) && >- (len > i+16) && >- all_zero(&buf[i], 16)) >- { >- i +=16; >- continue; >+ for (i=0;i<len;i+=16) { >+ size_t remaining_len = len - i; >+ size_t this_len = MIN(remaining_len, 16); >+ const uint8_t *this_buf = &buf[i]; >+ >+ if ((omit_zero_bytes == true) && >+ (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<len) { >- snprintf(tmp, sizeof(tmp), "[%04X] ", i); >- cb(tmp, private_data); >- } >- } >- >- snprintf(tmp, sizeof(tmp), "%02X ", (int)buf[i]); >- cb(tmp, private_data); >- i++; >- if (i%8 == 0) { >- cb(" ", private_data); >+ continue; > } >- if (i%16 == 0) { > >- print_asc_cb(&buf[i-16], 8, cb, private_data); >- cb(" ", private_data); >- print_asc_cb(&buf[i-8], 8, cb, private_data); >- cb("\n", private_data); >- >- if ((omit_zero_bytes == true) && >- (len > 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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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<len; i+=16) { >+ size_t remaining_len = len - i; >+ size_t remaining_len1 = 0; >+ size_t this_len1 = 0; >+ const uint8_t *this_buf1 = NULL; >+ size_t remaining_len2 = 0; >+ size_t this_len2 = 0; >+ const uint8_t *this_buf2 = NULL; >+ >+ if (i < len1) { >+ remaining_len1 = len1 - i; >+ this_len1 = MIN(remaining_len1, 16); >+ this_buf1 = &buf1[i]; >+ } >+ if (i < len2) { >+ remaining_len2 = len2 - i; >+ this_len2 = MIN(remaining_len2, 16); >+ this_buf2 = &buf2[i]; >+ } >+ >+ if ((omit_zero_bytes == true) && >+ (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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> >(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 <metze@samba.org> >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 <metze@samba.org> >Reviewed-by: Andreas Schneider <asn@samba.org> > >Autobuild-User(master): Stefan Metzmacher <metze@samba.org> >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 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
asn
:
review+
Actions:
View
Attachments on
bug 14956
:
17123
|
17124
| 17125