summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_disk_file.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2006-10-16 12:26:59 +0000
committerCorinna Vinschen <corinna@vinschen.de>2006-10-16 12:26:59 +0000
commit2c1ffdbf5e6f2767ab63e67834530539d36c6c0b (patch)
tree52cf8a418ca2727ea55f7918705fa7067275066b /winsup/cygwin/fhandler_disk_file.cc
parent7af26e0cc039517e3528ccedee7b778f479104c9 (diff)
downloadcygnal-2c1ffdbf5e6f2767ab63e67834530539d36c6c0b.tar.gz
cygnal-2c1ffdbf5e6f2767ab63e67834530539d36c6c0b.tar.bz2
cygnal-2c1ffdbf5e6f2767ab63e67834530539d36c6c0b.zip
* autoload.cc (PrivilegeCheck): Define.
* fhandler.cc (fhandler_base::open): Always try opening with backup resp. restore intent. * fhandler_disk_file.cc (fhandler_disk_file::opendir): Always try opening with backup intent. (fhandler_disk_file::readdir): Ditto when trying to retrieve file id explicitely. * security.cc (check_file_access): Replace pbuf with correctly PPRIVILEGE_SET typed pset. Check explicitely for backup and/or restore privileges when AccessCheck fails, to circumvent AccessCheck shortcoming. Add comment to explain.
Diffstat (limited to 'winsup/cygwin/fhandler_disk_file.cc')
-rw-r--r--winsup/cygwin/fhandler_disk_file.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc
index ae2c90d1f..66f488b30 100644
--- a/winsup/cygwin/fhandler_disk_file.cc
+++ b/winsup/cygwin/fhandler_disk_file.cc
@@ -1606,6 +1606,7 @@ fhandler_disk_file::opendir ()
SYNCHRONIZE | FILE_LIST_DIRECTORY,
&attr, &io, wincap.shared (),
FILE_SYNCHRONOUS_IO_NONALERT
+ | FILE_OPEN_FOR_BACKUP_INTENT
| FILE_DIRECTORY_FILE);
if (!NT_SUCCESS (status))
{
@@ -1869,7 +1870,7 @@ go_ahead:
InitializeObjectAttributes (&attr, &upath, OBJ_CASE_INSENSITIVE,
dir->__handle , NULL);
if (!NtOpenFile (&hdl, READ_CONTROL, &attr, &io,
- wincap.shared (), 0))
+ wincap.shared (), FILE_OPEN_FOR_BACKUP_INTENT))
{
de->d_ino = readdir_get_ino_by_handle (hdl);
CloseHandle (hdl);