diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 26f7fd0c2..6eb0d1d68 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2015-02-19 Corinna Vinschen + + * sec_acl.cc (setacl): Always grant owner FILE_WRITE_ATTRIBUTES access. + 2015-02-18 Corinna Vinschen * ldap.cc (struct cyg_ldap_search): Add scope member. diff --git a/winsup/cygwin/release/1.7.35 b/winsup/cygwin/release/1.7.35 index 4e5285ef6..8c8c9962d 100644 --- a/winsup/cygwin/release/1.7.35 +++ b/winsup/cygwin/release/1.7.35 @@ -23,10 +23,15 @@ Bug Fixes - Remove a debug message accidentally printed to the terminal window if an application calls fcntl(F_SETFL) erroneously. -- Regression in 1.7.34: acl(SETACL, ...) overwrote the incoming acltent_t - array for bookkeeping purposes while iterating over its entries. This - broke reusing the acl in the calling application (e.g. setfacl). - Addresses: https://cygwin.com/ml/cygwin/2015-02/msg00304.html +- Two regressions in 1.7.34 acl(SETACL, ...): + + - SETACL overwrote the incoming acltent_t array for bookkeeping purposes + while iterating over its entries. This broke reusing the acl in the + calling application (e.g. setfacl). + Addresses: https://cygwin.com/ml/cygwin/2015-02/msg00304.html + + - SETACL accidentally missed to grant owner FILE_WRITE_ATTRIBUTES access. + Addresses: https://cygwin.com/ml/cygwin/2015-02/msg00457.html - 64 bit: Export forgotten symbol __mempcpy. Addresses: https://cygwin.com/ml/cygwin/2015-02/msg00394.html diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index 94bd90cf7..0a73e22fe 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -1,7 +1,7 @@ /* sec_acl.cc: Sun compatible ACL functions. Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 2012, 2014 Red Hat, Inc. + 2011, 2012, 2014, 2015 Red Hat, Inc. Written by Corinna Vinschen @@ -138,7 +138,8 @@ setacl (HANDLE handle, path_conv &pc, int nentries, aclent_t *aclbufp, { case USER_OBJ: allow = &owner_allow; - *allow = STANDARD_RIGHTS_ALL; + *allow = STANDARD_RIGHTS_ALL + | (pc.fs_is_samba () ? 0 : FILE_WRITE_ATTRIBUTES); break; case GROUP_OBJ: allow = &group_allow;