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: bc444e5aa4 ("Reapply POSIX ACL changes.")
Reported-by: Jon Turney <jon.turney@dronecode.org.uk>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2023-07-21 21:49:54 +02:00
parent 8b0b719d49
commit 971d2dffea
1 changed files with 1 additions and 1 deletions

View File

@ -1103,7 +1103,7 @@ get_posix_access (PSECURITY_DESCRIPTOR psd,
pos = MAX_ACL_ENTRIES; pos = MAX_ACL_ENTRIES;
/* For old-style or non-Cygwin ACLs, check for merging permissions. */ /* 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) for (idx = 0; idx < pos; ++idx)
{ {
if (lacl[idx].a_type & (USER_OBJ | USER) if (lacl[idx].a_type & (USER_OBJ | USER)