mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-07-19 15:45:54 +02:00
SMB1FileStoreHelper: Delete / Rename: The status of SetFileInformation should be returned regardless of the status of CloseFile
This commit is contained in:
parent
2f39e9072c
commit
2457d2c246
1 changed files with 16 additions and 16 deletions
|
@ -41,20 +41,20 @@ namespace SMBLibrary.Server.SMB1
|
|||
{
|
||||
object handle;
|
||||
FileStatus fileStatus;
|
||||
NTStatus openStatus = fileStore.CreateFile(out handle, out fileStatus, path, DirectoryAccessMask.DELETE, 0, 0, CreateDisposition.FILE_OPEN, createOptions, securityContext);
|
||||
if (openStatus != NTStatus.STATUS_SUCCESS)
|
||||
NTStatus status = fileStore.CreateFile(out handle, out fileStatus, path, DirectoryAccessMask.DELETE, 0, 0, CreateDisposition.FILE_OPEN, createOptions, securityContext);
|
||||
if (status != NTStatus.STATUS_SUCCESS)
|
||||
{
|
||||
return openStatus;
|
||||
return status;
|
||||
}
|
||||
FileDispositionInformation fileDispositionInfo = new FileDispositionInformation();
|
||||
fileDispositionInfo.DeletePending = true;
|
||||
NTStatus setStatus = fileStore.SetFileInformation(handle, fileDispositionInfo);
|
||||
if (setStatus != NTStatus.STATUS_SUCCESS)
|
||||
status = fileStore.SetFileInformation(handle, fileDispositionInfo);
|
||||
if (status != NTStatus.STATUS_SUCCESS)
|
||||
{
|
||||
return setStatus;
|
||||
return status;
|
||||
}
|
||||
NTStatus closeStatus = fileStore.CloseFile(handle);
|
||||
return closeStatus;
|
||||
fileStore.CloseFile(handle);
|
||||
return status;
|
||||
}
|
||||
|
||||
public static NTStatus Rename(INTFileStore fileStore, string oldName, string newName, SMBFileAttributes searchAttributes, SecurityContext securityContext)
|
||||
|
@ -68,21 +68,21 @@ namespace SMBLibrary.Server.SMB1
|
|||
{
|
||||
createOptions = CreateOptions.FILE_NON_DIRECTORY_FILE;
|
||||
}
|
||||
NTStatus openStatus = fileStore.CreateFile(out handle, out fileStatus, oldName, DirectoryAccessMask.DELETE, 0, 0, CreateDisposition.FILE_OPEN, createOptions, securityContext);
|
||||
if (openStatus != NTStatus.STATUS_SUCCESS)
|
||||
NTStatus status = fileStore.CreateFile(out handle, out fileStatus, oldName, DirectoryAccessMask.DELETE, 0, 0, CreateDisposition.FILE_OPEN, createOptions, securityContext);
|
||||
if (status != NTStatus.STATUS_SUCCESS)
|
||||
{
|
||||
return openStatus;
|
||||
return status;
|
||||
}
|
||||
FileRenameInformationType2 renameInfo = new FileRenameInformationType2();
|
||||
renameInfo.ReplaceIfExists = false;
|
||||
renameInfo.FileName = newName;
|
||||
NTStatus setStatus = fileStore.SetFileInformation(handle, renameInfo);
|
||||
if (setStatus != NTStatus.STATUS_SUCCESS)
|
||||
status = fileStore.SetFileInformation(handle, renameInfo);
|
||||
if (status != NTStatus.STATUS_SUCCESS)
|
||||
{
|
||||
return setStatus;
|
||||
return status;
|
||||
}
|
||||
NTStatus closeStatus = fileStore.CloseFile(handle);
|
||||
return closeStatus;
|
||||
fileStore.CloseFile(handle);
|
||||
return status;
|
||||
}
|
||||
|
||||
public static NTStatus CheckDirectory(INTFileStore fileStore, string path, SecurityContext securityContext)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue