aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2023-07-21 21:49:54 +0200
committerCorinna Vinschen <corinna@vinschen.de>2023-07-21 21:57:44 +0200
commit971d2dffea7848270aa9dfb5c14dcd946c8971c0 (patch)
tree94b349f407f58565a8ebda52a92bc5884e0bd697 /winsup
parent8b0b719d499f6025b56652d8282d5a52f3722dc4 (diff)
downloadnewlib-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.cc2
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)