From 8fbdced08faf37472fd7174480b446c4b11578fb Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Wed, 4 Nov 2015 20:18:01 -0600 Subject: [PATCH 1/1] security_descriptor.h: updates - move SID and ACL earlier in the file - replace sid_start with SID - define ACE types --- include/wimlib/security_descriptor.h | 72 +++++++++++++++------------- 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/include/wimlib/security_descriptor.h b/include/wimlib/security_descriptor.h index 524ec4a6..ff789e2c 100644 --- a/include/wimlib/security_descriptor.h +++ b/include/wimlib/security_descriptor.h @@ -55,6 +55,41 @@ typedef struct { #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 */ @@ -71,53 +106,22 @@ typedef struct { 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; - 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; - le32 sid_start; + wimlib_SID sid; } _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 -- 2.43.0