* syscalls.cc (unlink_nt): Fix a bug which overwrites the NT status
value in case setting the delete disposition returns with STATUS_DIRECTORY_NOT_EMPTY.
This commit is contained in:
parent
b3480fbefb
commit
53e93974c8
|
@ -1,3 +1,9 @@
|
|||
2011-10-24 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* syscalls.cc (unlink_nt): Fix a bug which overwrites the NT status
|
||||
value in case setting the delete disposition returns with
|
||||
STATUS_DIRECTORY_NOT_EMPTY.
|
||||
|
||||
2011-10-24 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* shared.cc (open_shared): Fix memory reservation of essential shared
|
||||
|
|
|
@ -695,20 +695,22 @@ unlink_nt (path_conv &pc)
|
|||
{
|
||||
debug_printf ("Setting delete disposition on %S failed, status = %p",
|
||||
pc.get_nt_native_path (), status);
|
||||
if (status == STATUS_DIRECTORY_NOT_EMPTY)
|
||||
if (strace.active () && status == STATUS_DIRECTORY_NOT_EMPTY)
|
||||
{
|
||||
NTSTATUS status2;
|
||||
|
||||
pc.get_object_attr (attr, sec_none_nih);
|
||||
NtClose (fh);
|
||||
status = NtOpenFile (&fh, access | FILE_LIST_DIRECTORY | SYNCHRONIZE,
|
||||
&attr, &io, FILE_SHARE_VALID_FLAGS,
|
||||
flags | FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
if (NT_SUCCESS (status))
|
||||
status2 = NtOpenFile (&fh, access | FILE_LIST_DIRECTORY | SYNCHRONIZE,
|
||||
&attr, &io, FILE_SHARE_VALID_FLAGS,
|
||||
flags | FILE_SYNCHRONOUS_IO_NONALERT);
|
||||
if (NT_SUCCESS (status2))
|
||||
check_dir_not_empty (fh, pc);
|
||||
else
|
||||
{
|
||||
fh = NULL;
|
||||
debug_printf ("Opening dir %S for check_dir_not_empty failed, "
|
||||
"status = %p", pc.get_nt_native_path (), status);
|
||||
"status = %p", pc.get_nt_native_path (), status2);
|
||||
}
|
||||
}
|
||||
/* Trying to delete a hardlink to a file in use by the system in some
|
||||
|
|
Loading…
Reference in New Issue