[newlib-cygwin/cygwin-3_3-branch] Cygwin: ACLs: don't set indicator for default ACEs prematurely

Corinna Vinschen corinna@sourceware.org
Tue Jan 25 19:05:32 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=7d1e87cd76a920824507ff62164e8dbf3dcb8232

commit 7d1e87cd76a920824507ff62164e8dbf3dcb8232
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Tue Jan 25 19:53:40 2022 +0100

    Cygwin: ACLs: don't set indicator for default ACEs prematurely
    
    Commit a2bfe7cae61a introduced a change ignoring default ACEs on files
    to come up with a valid POSIX ACL, reflecting the Windows ACEs actually
    making sense on files.
    
    However, if CREATOR OWNER or CREATOR GROUP ACEs - both only making sense
    as default ACEs - are found in the ACL, a value indicating the presence
    of default ACEs gets set, even on files.  This in turn breaks a
    subsequent integrity check and get_posix_access returns EINVAL.
    
    The code path handling default ACEs on directories sets this indicator
    anyway, so don't set it just because one of the above SIDs are found.
    
    Fixes: a2bfe7cae61a ("Cygwin: ACLs: ignore *_INHERIT flags in file ACLs")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/sec_acl.cc | 2 --
 1 file changed, 2 deletions(-)

diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc
index 98d2391b1..32edf0d32 100644
--- a/winsup/cygwin/sec_acl.cc
+++ b/winsup/cygwin/sec_acl.cc
@@ -850,14 +850,12 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
       else if (ace_sid == well_known_creator_owner_sid)
 	{
 	  type = DEF_USER_OBJ;
-	  types_def |= type;
 	  id = ACL_UNDEFINED_ID;
 	  saw_def_user_obj = true;
 	}
       else if (ace_sid == well_known_creator_group_sid)
 	{
 	  type = DEF_GROUP_OBJ;
-	  types_def |= type;
 	  id = ACL_UNDEFINED_ID;
 	  saw_def_group_obj = true;
 	}


More information about the Cygwin-cvs mailing list