security_descriptor.h: updates
authorEric Biggers <ebiggers3@gmail.com>
Thu, 5 Nov 2015 02:18:01 +0000 (20:18 -0600)
committerEric Biggers <ebiggers3@gmail.com>
Sat, 7 Nov 2015 21:05:15 +0000 (15:05 -0600)
- move SID and ACL earlier in the file
- replace sid_start with SID
- define ACE types

include/wimlib/security_descriptor.h

index 524ec4a..ff789e2 100644 (file)
@@ -55,6 +55,41 @@ typedef struct {
 #define wimlib_SE_RM_CONTROL_VALID             0x4000
 #define wimlib_SE_SELF_RELATIVE                        0x8000
 
 #define wimlib_SE_RM_CONTROL_VALID             0x4000
 #define wimlib_SE_SELF_RELATIVE                        0x8000
 
+/* Windows NT security identifier (user or group)  */
+typedef struct {
+
+       u8  revision;
+       u8  sub_authority_count;
+
+       /* Identifies the authority that issued the SID  */
+       u8  identifier_authority[6];
+
+       le32 sub_authority[];
+} _packed_attribute wimlib_SID;
+
+/* Header of a Windows NT access control list  */
+typedef struct {
+       /* ACL_REVISION or ACL_REVISION_DS */
+       u8 revision;
+
+       /* padding  */
+       u8 sbz1;
+
+       /* Total size of the ACL, including all access control entries  */
+       le16 acl_size;
+
+       /* Number of access control entry structures that follow the ACL
+        * structure  */
+       le16 ace_count;
+
+       /* padding  */
+       le16 sbz2;
+} _packed_attribute wimlib_ACL;
+
+#define wimlib_ACCESS_ALLOWED_ACE_TYPE         0
+#define wimlib_ACCESS_DENIED_ACE_TYPE          1
+#define wimlib_SYSTEM_AUDIT_ACE_TYPE           2
+
 /* Header of a Windows NT access control entry  */
 typedef struct {
        /* Type of ACE  */
 /* Header of a Windows NT access control entry  */
 typedef struct {
        /* Type of ACE  */
@@ -71,53 +106,22 @@ typedef struct {
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
-       le32 sid_start;
+       wimlib_SID sid;
 } _packed_attribute wimlib_ACCESS_ALLOWED_ACE;
 
 /* Windows NT access control entry to deny rights to a user or group  */
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
 } _packed_attribute wimlib_ACCESS_ALLOWED_ACE;
 
 /* Windows NT access control entry to deny rights to a user or group  */
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
-       le32 sid_start;
+       wimlib_SID sid;
 } _packed_attribute wimlib_ACCESS_DENIED_ACE;
 
 /* Windows NT access control entry to audit access to the object  */
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
 } _packed_attribute wimlib_ACCESS_DENIED_ACE;
 
 /* Windows NT access control entry to audit access to the object  */
 typedef struct {
        wimlib_ACE_HEADER hdr;
        le32 mask;
-       le32 sid_start;
+       wimlib_SID sid;
 } _packed_attribute wimlib_SYSTEM_AUDIT_ACE;
 
 
 } _packed_attribute wimlib_SYSTEM_AUDIT_ACE;
 
 
-/* Header of a Windows NT access control list  */
-typedef struct {
-       /* ACL_REVISION or ACL_REVISION_DS */
-       u8 revision;
-
-       /* padding  */
-       u8 sbz1;
-
-       /* Total size of the ACL, including all access control entries  */
-       le16 acl_size;
-
-       /* Number of access control entry structures that follow the ACL
-        * structure  */
-       le16 ace_count;
-
-       /* padding  */
-       le16 sbz2;
-} _packed_attribute wimlib_ACL;
-
-/* Windows NT security identifier (user or group)  */
-typedef struct {
-
-       u8  revision;
-       u8  sub_authority_count;
-
-       /* Identifies the authority that issued the SID  */
-       u8  identifier_authority[6];
-
-       le32 sub_authority[];
-} _packed_attribute wimlib_SID;
-
 #endif
 #endif