diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2023-07-21 21:49:54 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2023-07-21 21:57:44 +0200 |
commit | 971d2dffea7848270aa9dfb5c14dcd946c8971c0 (patch) | |
tree | 94b349f407f58565a8ebda52a92bc5884e0bd697 /winsup | |
parent | 8b0b719d499f6025b56652d8282d5a52f3722dc4 (diff) | |
download | newlib-971d2dffea7848270aa9dfb5c14dcd946c8971c0.zip newlib-971d2dffea7848270aa9dfb5c14dcd946c8971c0.tar.gz newlib-971d2dffea7848270aa9dfb5c14dcd946c8971c0.tar.bz2 |
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 <jon.turney@dronecode.org.uk>
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/sec/acl.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/winsup/cygwin/sec/acl.cc b/winsup/cygwin/sec/acl.cc index 2fd08ad..db86f9e 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) |