summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/security.h
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/security.h')
-rw-r--r--winsup/cygwin/security.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/security.h b/winsup/cygwin/security.h
index 7af737fd7..9b1edbc84 100644
--- a/winsup/cygwin/security.h
+++ b/winsup/cygwin/security.h
@@ -44,8 +44,10 @@ void uinfo_init ();
#define gid16togid32(g16) ((g16)==ILLEGAL_GID16?ILLEGAL_GID:(gid_t)(g16))
#endif
-
-#define MAX_SID_LEN 40
+#define MAX_SUBAUTH_CNT 11
+#define MAX_SID_LEN (2 * sizeof (BYTE) \
+ + sizeof (SID_IDENTIFIER_AUTHORITY) \
+ + MAX_SUBAUTH_CNT * sizeof (DWORD))
#define MAX_DACL_LEN(n) (sizeof (ACL) \
+ (n) * (sizeof (ACCESS_ALLOWED_ACE) - sizeof (DWORD) + MAX_SID_LEN))
#define SD_MIN_SIZE (sizeof (SECURITY_DESCRIPTOR) + MAX_DACL_LEN (1))
@@ -99,7 +101,7 @@ typedef struct {
BYTE Revision;
BYTE SubAuthorityCount;
SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
- DWORD SubAuthority[8];
+ DWORD SubAuthority[MAX_SUBAUTH_CNT];
} DBGSID, *PDBGSID;
/* Macro to define variable length SID structures */