From 902716e5992bba1fdab08550e8fa70f6cbfa838b Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 28 Nov 2006 09:57:01 +0000 Subject: [PATCH] * fhandler.cc (fhandler_base::open): Fix previous patch to handle the SYSTEM attribute as well. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/fhandler.cc | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 52cb849ab..3a7328c30 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2006-11-28 Corinna Vinschen + + * fhandler.cc (fhandler_base::open): Fix previous patch to handle the + SYSTEM attribute as well. + 2006-11-27 Corinna Vinschen * fhandler.cc (fhandler_base::open): Fix handling of files with diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 78c070d14..0fc9e6fcc 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -685,10 +685,11 @@ fhandler_base::open (int flags, mode_t mode) file_attributes |= FILE_ATTRIBUTE_HIDDEN; #endif /* Starting with Windows 2000, when trying to overwrite an already - existing file with FILE_ATTRIBUTE_HIDDEN attribute set, CreateFile - fails with "Permission denied". Per MSDN you have to create the - file with the same attributes as already specified for the file. */ - if (exists () && has_attribute (FILE_ATTRIBUTE_HIDDEN)) + existing file with FILE_ATTRIBUTE_HIDDEN and/or FILE_ATTRIBUTE_SYSTEM + attribute set, CreateFile fails with ERROR_ACCESS_DENIED. + Per MSDN you have to create the file with the same attributes as + already specified for the file. */ + if (has_attribute (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)) file_attributes |= pc.file_attributes (); /* If the file should actually be created and ntsec is on,