Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-07-22 22:49:48 +0400
committerCorinna Vinschen <corinna@vinschen.de>2009-07-22 22:49:48 +0400
commitd974d420d494228ea759e08013805888c5f13ac0 (patch)
tree96605defcd73aec882266cfe8c5573d440a67d5a
parentc9b801922544efefaf90349777e939bb76e2717a (diff)
* mount.cc (fs_info::update): Open filesystem with access set to 0.
Explain why.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/mount.cc10
2 files changed, 11 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 09223afb7..f4c75a307 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2009-07-22 Corinna Vinschen <corinna@vinschen.de>
+ * mount.cc (fs_info::update): Open filesystem with access set to 0.
+ Explain why.
+
+2009-07-22 Corinna Vinschen <corinna@vinschen.de>
+
* mount.cc: Revert accidental checkin.
2009-07-22 Corinna Vinschen <corinna@vinschen.de>
diff --git a/winsup/cygwin/mount.cc b/winsup/cygwin/mount.cc
index ed1ab90d4..64583c7ab 100644
--- a/winsup/cygwin/mount.cc
+++ b/winsup/cygwin/mount.cc
@@ -133,8 +133,11 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
/* Always caseinsensitive. We really just need access to the drive. */
InitializeObjectAttributes (&attr, upath, OBJ_CASE_INSENSITIVE, NULL,
NULL);
- status = NtOpenFile (&vol, READ_CONTROL, &attr, &io,
- FILE_SHARE_VALID_FLAGS, FILE_OPEN_FOR_BACKUP_INTENT);
+ /* At least one filesystem (HGFS, VMware shared folders) doesn't like
+ to be opened with acces set to just READ_CONTROL. No worries, since
+ filesystem information is available without any access bit set. */
+ status = NtOpenFile (&vol, 0, &attr, &io, FILE_SHARE_VALID_FLAGS,
+ FILE_OPEN_FOR_BACKUP_INTENT);
while (!NT_SUCCESS (status)
&& (attr.ObjectName->Length > 7 * sizeof (WCHAR)
|| status == STATUS_NO_MEDIA_IN_DEVICE))
@@ -149,8 +152,7 @@ fs_info::update (PUNICODE_STRING upath, HANDLE in_vol)
}
else if (dir.Length > 7 * sizeof (WCHAR))
dir.Length -= sizeof (WCHAR);
- status = NtOpenFile (&vol, READ_CONTROL, &attr, &io,
- FILE_SHARE_VALID_FLAGS,
+ status = NtOpenFile (&vol, 0, &attr, &io, FILE_SHARE_VALID_FLAGS,
FILE_OPEN_FOR_BACKUP_INTENT);
}
if (!NT_SUCCESS (status))