summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2016-01-28 14:34:11 +0100
committerCorinna Vinschen <corinna@vinschen.de>2016-01-28 14:34:11 +0100
commita16ab1751c64557b46945d4c093b8977c0584327 (patch)
treeb94f9c3c95ff543134a10a6d8799d92f014ac434
parent69f4c4029183fb26d2fcae00790881620c1978a3 (diff)
downloadcygnal-a16ab1751c64557b46945d4c093b8977c0584327.tar.gz
cygnal-a16ab1751c64557b46945d4c093b8977c0584327.tar.bz2
cygnal-a16ab1751c64557b46945d4c093b8977c0584327.zip
get_posix_access: Fix primary group handing when multiple ACEs exist
Handle additional ACE for primary group only as another GROUP entry if it's an allow ACE. Deny ACEs don't qualify. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r--winsup/cygwin/sec_acl.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc
index 51003c4d0..be5442336 100644
--- a/winsup/cygwin/sec_acl.cc
+++ b/winsup/cygwin/sec_acl.cc
@@ -829,10 +829,12 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
else if (type == GROUP_OBJ)
{
/* Same for the primary group. */
- if (saw_group_obj)
- type = GROUP;
if (ace->Header.AceType == ACCESS_ALLOWED_ACE_TYPE)
- saw_group_obj = true;
+ {
+ if (saw_group_obj)
+ type = GROUP;
+ saw_group_obj = true;
+ }
}
if ((pos = searchace (lacl, MAX_ACL_ENTRIES, type, id)) >= 0)
{