From: Andrew Bartlett Date: Wed, 4 Dec 2019 01:46:32 +0000 (+1300) Subject: selftest: Add test for structure with NDR_BUFFERS only in a union X-Git-Tag: ldb-2.1.0~276 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf83eec565f2879c06874cdd390ab3a043c132f8;p=thirdparty%2Fsamba.git selftest: Add test for structure with NDR_BUFFERS only in a union BUG: https://bugzilla.samba.org/show_bug.cgi?id=13876 Signed-off-by: Andrew Bartlett Reviewed-by: Gary Lockyer --- diff --git a/python/samba/tests/blackbox/ndrdump.py b/python/samba/tests/blackbox/ndrdump.py index 5e4b3bfbd8c..e356e0eaa80 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -312,3 +312,41 @@ dump OK # check_output will return bytes # convert expected to bytes for python 3 self.assertEqual(actual, expected.encode('utf-8')) + + # This is a good example of a union with an empty default + # and no buffers to parse. + def test_ndrdump_fuzzed_spoolss_EnumForms(self): + expected_head = b'''pull returned Success +WARNING! 2 unread bytes +[0000] 00 00 .. ''' b''' + spoolss_EnumForms: struct spoolss_EnumForms + out: struct spoolss_EnumForms + count : * + count : 0x00000100 (256) + info : * + info : * + info: ARRAY(256) + info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) +''' + expected_tail = b'''info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) + info : union spoolss_FormInfo(case 0) + needed : * + needed : 0x00000000 (0) + result : DOS code 0xa9a9a900 +dump OK +''' + try: + actual = self.check_output( + "ndrdump spoolss spoolss_EnumForms out --base64-input " +\ + "--input AAAAAQAAAAAAAAAAAAEAAACpqakAAA=" + ) + except BlackboxProcessError as e: + self.fail(e) + self.assertEqual(actual[:len(expected_head)], + expected_head) + self.assertTrue(actual.endswith(expected_tail)) diff --git a/selftest/knownfail.d/ndrdump-spoolss_EnumForms b/selftest/knownfail.d/ndrdump-spoolss_EnumForms new file mode 100644 index 00000000000..fc5c6b5e686 --- /dev/null +++ b/selftest/knownfail.d/ndrdump-spoolss_EnumForms @@ -0,0 +1 @@ +^samba.tests.blackbox.ndrdump.samba.tests.blackbox.ndrdump.NdrDumpTests.test_ndrdump_fuzzed_spoolss_EnumForms