From 378692ee42bb29280c439600832e84a0ddb7471a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 30 Jul 2007 10:58:16 +0000 Subject: * fhandler_disk_file.cc (fhandler_disk_file::facl): If file can't be opened for reading the ACLs, fall back to faking them. * sec_acl.cc (acl_worker): Handle non-existing files. * security.cc (get_file_attribute): Return ILLEGAL_UID/ILLEGAL_GID as owner/group for non-readable ACLs on file systems supporting them. --- winsup/cygwin/fhandler_disk_file.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'winsup/cygwin/fhandler_disk_file.cc') diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index 46b178fb7..a5a7c4b53 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -841,6 +841,7 @@ fhandler_disk_file::facl (int cmd, int nentries, __aclent32_t *aclbufp) if (!pc.has_acls () || !allow_ntsec) { +cant_access_acl: switch (cmd) { struct __stat64 st; @@ -895,9 +896,13 @@ fhandler_disk_file::facl (int cmd, int nentries, __aclent32_t *aclbufp) { if (!get_handle ()) { - query_open (cmd == SETACL ? query_write_control : query_read_attributes); + query_open (cmd == SETACL ? query_write_control : query_read_control); if (!(oret = open (O_BINARY, 0))) - return -1; + { + if (cmd == GETACL || cmd == GETACLCNT) + goto cant_access_acl; + return -1; + } } switch (cmd) { -- cgit v1.2.3