selftest: Add example xattr_NTACL packets to demonstrate switch/union behaviour
authorAndrew Bartlett <abartlet@samba.org>
Wed, 4 Dec 2019 03:02:31 +0000 (16:02 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 12 Dec 2019 02:30:39 +0000 (02:30 +0000)
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 <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
python/samba/tests/blackbox/ndrdump.py
source4/librpc/tests/xattr_NTACL.dat [new file with mode: 0644]
source4/librpc/tests/xattr_NTACL.txt [new file with mode: 0644]

index e356e0eaa8012804706a0676f5fc29ba2a998bd9..a1528d86485849af0eab7153b8b87a8bf7c1bf55 100644 (file)
@@ -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 (file)
index 0000000..8ec2eda
--- /dev/null
@@ -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 (file)
index 0000000..9b60a7f
--- /dev/null
@@ -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)