From: Andrew Bartlett Date: Wed, 4 Dec 2019 03:02:31 +0000 (+1300) Subject: selftest: Add example xattr_NTACL packets to demonstrate switch/union behaviour X-Git-Tag: ldb-2.1.0~275 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ef50145494125c8e67c034ddb1816a567524984;p=thirdparty%2Fsamba.git selftest: Add example xattr_NTACL packets to demonstrate switch/union behaviour This is a good example with both buffers and scalars in the 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 e356e0eaa80..a1528d86485 100644 --- a/python/samba/tests/blackbox/ndrdump.py +++ b/python/samba/tests/blackbox/ndrdump.py @@ -350,3 +350,20 @@ dump OK self.assertEqual(actual[:len(expected_head)], expected_head) self.assertTrue(actual.endswith(expected_tail)) + + # This is a good example of a union with scalars and buffers + def test_ndrdump_xattr_NTACL(self): + + expected_head = open(self.data_path("xattr_NTACL.txt")).read().encode('utf8') + expected_tail = b'''dump OK +''' + try: + actual = self.check_output( + "ndrdump xattr xattr_NTACL struct --hex-input %s --validate" % + self.data_path("xattr_NTACL.dat")) + except BlackboxProcessError as e: + self.fail(e) + + self.assertEqual(actual[:len(expected_head)], + expected_head) + self.assertTrue(actual.endswith(expected_tail)) diff --git a/source4/librpc/tests/xattr_NTACL.dat b/source4/librpc/tests/xattr_NTACL.dat new file mode 100644 index 00000000000..8ec2eda5aa9 --- /dev/null +++ b/source4/librpc/tests/xattr_NTACL.dat @@ -0,0 +1,20 @@ +[0000] 04 00 04 00 00 00 02 00 04 00 02 00 01 00 04 07 ........ ........ +[0010] 8B 57 A0 0C F3 F7 9D 64 DF 3E 91 46 09 B8 07 A5 .W.....d .>.F.... +[0020] F1 6C BE 38 DC 55 5B 1F 38 0C 23 A8 4A 85 00 00 .l.8.U[. 8.#.J... +[0030] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ........ ........ +[0040] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 6F ........ ......po +[0050] 73 69 78 5F 61 63 6C 00 62 A2 D8 8C 4B AA D5 01 six_acl. b...K... +[0060] 5D 60 E7 56 A5 D4 54 92 1A 77 A5 E1 DC E2 A9 28 ]`.V..T. .w.....( +[0070] A9 5D 3B 97 71 6C F7 59 F4 92 FF E3 42 A5 E9 B5 .];.ql.Y ....B... +[0080] 00 00 00 00 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 00 00 00 ........ ........ +[00A0] 01 00 14 90 B4 00 00 00 D0 00 00 00 00 00 00 00 ........ ........ +[00B0] E0 00 00 00 01 05 00 00 00 00 00 05 15 00 00 00 ........ ........ +[00C0] 70 CB 8E 6B F1 F8 4E 7C 31 87 57 84 F4 01 00 00 p..k..N| 1.W..... +[00D0] 01 02 00 00 00 00 00 05 20 00 00 00 20 02 00 00 ........ ... ... +[00E0] 04 00 60 00 04 00 00 00 00 03 18 00 FF 01 1F 00 ..`..... ........ +[00F0] 01 02 00 00 00 00 00 05 20 00 00 00 20 02 00 00 ........ ... ... +[0100] 00 03 18 00 A9 00 12 00 01 02 00 00 00 00 00 05 ........ ........ +[0110] 20 00 00 00 25 02 00 00 00 03 14 00 FF 01 1F 00 ...%... ........ +[0120] 01 01 00 00 00 00 00 05 12 00 00 00 00 03 14 00 ........ ........ +[0130] A9 00 12 00 01 01 00 00 00 00 00 05 0B 00 00 00 ........ ........ diff --git a/source4/librpc/tests/xattr_NTACL.txt b/source4/librpc/tests/xattr_NTACL.txt new file mode 100644 index 00000000000..9b60a7f587b --- /dev/null +++ b/source4/librpc/tests/xattr_NTACL.txt @@ -0,0 +1,99 @@ +pull returned Success + xattr_NTACL: struct xattr_NTACL + version : 0x0004 (4) + info : union xattr_NTACL_Info(case 4) + sd_hs4 : * + sd_hs4: struct security_descriptor_hash_v4 + sd : * + sd: struct security_descriptor + revision : SECURITY_DESCRIPTOR_REVISION_1 (1) + type : 0x9014 (36884) + 0: SEC_DESC_OWNER_DEFAULTED + 0: SEC_DESC_GROUP_DEFAULTED + 1: SEC_DESC_DACL_PRESENT + 0: SEC_DESC_DACL_DEFAULTED + 1: SEC_DESC_SACL_PRESENT + 0: SEC_DESC_SACL_DEFAULTED + 0: SEC_DESC_DACL_TRUSTED + 0: SEC_DESC_SERVER_SECURITY + 0: SEC_DESC_DACL_AUTO_INHERIT_REQ + 0: SEC_DESC_SACL_AUTO_INHERIT_REQ + 0: SEC_DESC_DACL_AUTO_INHERITED + 0: SEC_DESC_SACL_AUTO_INHERITED + 1: SEC_DESC_DACL_PROTECTED + 0: SEC_DESC_SACL_PROTECTED + 0: SEC_DESC_RM_CONTROL_VALID + 1: SEC_DESC_SELF_RELATIVE + owner_sid : * + owner_sid : S-1-5-21-1804520304-2085550321-2220328753-500 + group_sid : * + group_sid : S-1-5-32-544 + sacl : NULL + dacl : * + dacl: struct security_acl + revision : SECURITY_ACL_REVISION_ADS (4) + size : 0x0060 (96) + num_aces : 0x00000004 (4) + aces: ARRAY(4) + aces: struct security_ace + type : SEC_ACE_TYPE_ACCESS_ALLOWED (0) + flags : 0x03 (3) + 1: SEC_ACE_FLAG_OBJECT_INHERIT + 1: SEC_ACE_FLAG_CONTAINER_INHERIT + 0: SEC_ACE_FLAG_NO_PROPAGATE_INHERIT + 0: SEC_ACE_FLAG_INHERIT_ONLY + 0: SEC_ACE_FLAG_INHERITED_ACE + 0x03: SEC_ACE_FLAG_VALID_INHERIT (3) + 0: SEC_ACE_FLAG_SUCCESSFUL_ACCESS + 0: SEC_ACE_FLAG_FAILED_ACCESS + size : 0x0018 (24) + access_mask : 0x001f01ff (2032127) + object : union security_ace_object_ctr(case 0) + trustee : S-1-5-32-544 + aces: struct security_ace + type : SEC_ACE_TYPE_ACCESS_ALLOWED (0) + flags : 0x03 (3) + 1: SEC_ACE_FLAG_OBJECT_INHERIT + 1: SEC_ACE_FLAG_CONTAINER_INHERIT + 0: SEC_ACE_FLAG_NO_PROPAGATE_INHERIT + 0: SEC_ACE_FLAG_INHERIT_ONLY + 0: SEC_ACE_FLAG_INHERITED_ACE + 0x03: SEC_ACE_FLAG_VALID_INHERIT (3) + 0: SEC_ACE_FLAG_SUCCESSFUL_ACCESS + 0: SEC_ACE_FLAG_FAILED_ACCESS + size : 0x0018 (24) + access_mask : 0x001200a9 (1179817) + object : union security_ace_object_ctr(case 0) + trustee : S-1-5-32-549 + aces: struct security_ace + type : SEC_ACE_TYPE_ACCESS_ALLOWED (0) + flags : 0x03 (3) + 1: SEC_ACE_FLAG_OBJECT_INHERIT + 1: SEC_ACE_FLAG_CONTAINER_INHERIT + 0: SEC_ACE_FLAG_NO_PROPAGATE_INHERIT + 0: SEC_ACE_FLAG_INHERIT_ONLY + 0: SEC_ACE_FLAG_INHERITED_ACE + 0x03: SEC_ACE_FLAG_VALID_INHERIT (3) + 0: SEC_ACE_FLAG_SUCCESSFUL_ACCESS + 0: SEC_ACE_FLAG_FAILED_ACCESS + size : 0x0014 (20) + access_mask : 0x001f01ff (2032127) + object : union security_ace_object_ctr(case 0) + trustee : S-1-5-18 + aces: struct security_ace + type : SEC_ACE_TYPE_ACCESS_ALLOWED (0) + flags : 0x03 (3) + 1: SEC_ACE_FLAG_OBJECT_INHERIT + 1: SEC_ACE_FLAG_CONTAINER_INHERIT + 0: SEC_ACE_FLAG_NO_PROPAGATE_INHERIT + 0: SEC_ACE_FLAG_INHERIT_ONLY + 0: SEC_ACE_FLAG_INHERITED_ACE + 0x03: SEC_ACE_FLAG_VALID_INHERIT (3) + 0: SEC_ACE_FLAG_SUCCESSFUL_ACCESS + 0: SEC_ACE_FLAG_FAILED_ACCESS + size : 0x0014 (20) + access_mask : 0x001200a9 (1179817) + object : union security_ace_object_ctr(case 0) + trustee : S-1-5-11 + hash_type : 0x0001 (1) + hash: ARRAY(64)