diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2006-10-16 12:26:59 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2006-10-16 12:26:59 +0000 |
commit | 2c1ffdbf5e6f2767ab63e67834530539d36c6c0b (patch) | |
tree | 52cf8a418ca2727ea55f7918705fa7067275066b /winsup/cygwin/fhandler_disk_file.cc | |
parent | 7af26e0cc039517e3528ccedee7b778f479104c9 (diff) | |
download | cygnal-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.cc | 3 |
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); |