diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-09-10 18:53:44 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-09-10 18:53:44 +0400 |
commit | 4e8f539f158b9d3413d0b88ce2fb8f70733139d8 (patch) | |
tree | cdd8b95ced54952c50a3335c901e94a5f288b46a /winsup/cygwin/security.cc | |
parent | f65c5a0a2b1728ce2b317b31b601574f1ef7f5b2 (diff) |
* flock.cc (allow_others_to_sync): Define MAX_PROCESS_SD_SIZE. Use
instead of ACL_DEFAULT_SIZE.
* sec_acl.cc (setacl): Use TLS buffer to allow maximum ACL size.
* security.h (ACL_DEFAULT_SIZE): Drop definition.
(ACL_MAXIMUM_SIZE): Define.
(SD_MAXIMUM_SIZE): Define.
* security.cc (get_file_sd): Allocate security_decscriptor with size
SD_MAXIMUM_SIZE.
(alloc_sd): Use TLS buffer to allow maximum ACL size.
Diffstat (limited to 'winsup/cygwin/security.cc')
-rw-r--r-- | winsup/cygwin/security.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index e88fcf2fc..1052f98c0 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -24,6 +24,7 @@ details. */ #include "cygheap.h" #include "ntdll.h" #include "pwdgrp.h" +#include "tls_pbuf.h" #include <aclapi.h> #define ALL_SECURITY_INFORMATION (DACL_SECURITY_INFORMATION \ @@ -68,7 +69,7 @@ get_file_sd (HANDLE fh, path_conv &pc, security_descriptor &sd, else { NTSTATUS status; - ULONG len = 32768; + ULONG len = SD_MAXIMUM_SIZE; if (!sd.malloc (len)) { @@ -413,6 +414,7 @@ alloc_sd (path_conv &pc, __uid32_t uid, __gid32_t gid, int attribute, security_descriptor &sd_ret) { BOOL dummy; + tmp_pathbuf tp; /* NOTE: If the high bit of attribute is set, we have just created a file or directory. See below for an explanation. */ @@ -483,8 +485,8 @@ alloc_sd (path_conv &pc, __uid32_t uid, __gid32_t gid, int attribute, } /* Initialize local access control list. */ - PACL acl = (PACL) alloca (ACL_DEFAULT_SIZE); - if (!InitializeAcl (acl, ACL_DEFAULT_SIZE, ACL_REVISION)) + PACL acl = (PACL) tp.w_get (); + if (!InitializeAcl (acl, ACL_MAXIMUM_SIZE, ACL_REVISION)) { __seterrno (); return NULL; |