https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=971d2dffea7848270aa9dfb5c14dcd946c8971c0
commit 971d2dffea7848270aa9dfb5c14dcd946c8971c0 Author: Corinna Vinschen <[email protected]> AuthorDate: Fri Jul 21 21:49:54 2023 +0200 Commit: Corinna Vinschen <[email protected]> CommitDate: Fri Jul 21 21:57:44 2023 +0200 Cygwin: get_posix_access: do not merge permissions for just created files When creating the POSIX ACL rewrite, the code merging permissions from everyone/group to group/user ACEs was accidentally called for newly generated files as well. This could result in broken permissions, if umask used unusual values like "0100", granted permissions to everyone/group not granted to group/user. Make sure to skip permission merging if the file got just created and we only want to set correct permissions for the first time. Fixes: bc444e5aa4ca ("Reapply POSIX ACL changes.") Reported-by: Jon Turney <[email protected]> Signed-off-by: Corinna Vinschen <[email protected]> Diff: --- winsup/cygwin/sec/acl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/winsup/cygwin/sec/acl.cc b/winsup/cygwin/sec/acl.cc index 2fd08ad62579..db86f9e9e023 100644 --- a/winsup/cygwin/sec/acl.cc +++ b/winsup/cygwin/sec/acl.cc @@ -1103,7 +1103,7 @@ get_posix_access (PSECURITY_DESCRIPTOR psd, pos = MAX_ACL_ENTRIES; /* For old-style or non-Cygwin ACLs, check for merging permissions. */ - if (!new_style) + if (!just_created && !new_style) for (idx = 0; idx < pos; ++idx) { if (lacl[idx].a_type & (USER_OBJ | USER)
