SMB1 helpers: Improved code readability

This commit is contained in:
Tal Aloni 2017-02-10 18:26:40 +02:00
parent 30f0a641d2
commit ce96106b5b
7 changed files with 51 additions and 51 deletions

View file

@ -21,7 +21,7 @@ namespace SMBLibrary.Server.SMB1
if (!share.HasWriteAccess(session.UserName, request.DirectoryName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.DirectoryName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_CREATE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;
@ -33,13 +33,13 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Debug, "CreateDirectory: Cannot create '{0}'", request.DirectoryName); state.LogToServer(Severity.Debug, "CreateDirectory: Cannot create '{0}'", request.DirectoryName);
header.Status = NTStatus.STATUS_OBJECT_NAME_INVALID; header.Status = NTStatus.STATUS_OBJECT_NAME_INVALID;
return new ErrorResponse(CommandName.SMB_COM_CREATE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
catch (UnauthorizedAccessException) catch (UnauthorizedAccessException)
{ {
state.LogToServer(Severity.Debug, "CreateDirectory: Cannot create '{0}', Access Denied", request.DirectoryName); state.LogToServer(Severity.Debug, "CreateDirectory: Cannot create '{0}', Access Denied", request.DirectoryName);
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_CREATE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
return new CreateDirectoryResponse(); return new CreateDirectoryResponse();
@ -51,7 +51,7 @@ namespace SMBLibrary.Server.SMB1
if (!share.HasWriteAccess(session.UserName, request.DirectoryName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.DirectoryName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_DELETE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;
@ -59,13 +59,13 @@ namespace SMBLibrary.Server.SMB1
if (entry == null) if (entry == null)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_DELETE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
if (!entry.IsDirectory) if (!entry.IsDirectory)
{ {
header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID; header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID;
return new ErrorResponse(CommandName.SMB_COM_DELETE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
try try
@ -77,13 +77,13 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}'", request.DirectoryName); state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}'", request.DirectoryName);
header.Status = NTStatus.STATUS_CANNOT_DELETE; header.Status = NTStatus.STATUS_CANNOT_DELETE;
return new ErrorResponse(CommandName.SMB_COM_DELETE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
catch (UnauthorizedAccessException) catch (UnauthorizedAccessException)
{ {
state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}', Access Denied", request.DirectoryName); state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}', Access Denied", request.DirectoryName);
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_DELETE_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
} }
@ -94,7 +94,7 @@ namespace SMBLibrary.Server.SMB1
if (entry == null || !entry.IsDirectory) if (entry == null || !entry.IsDirectory)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_CHECK_DIRECTORY); return new ErrorResponse(request.CommandName);
} }
return new CheckDirectoryResponse(); return new CheckDirectoryResponse();
@ -106,7 +106,7 @@ namespace SMBLibrary.Server.SMB1
if (!share.HasWriteAccess(session.UserName, request.FileName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.FileName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_DELETE); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;
@ -114,14 +114,14 @@ namespace SMBLibrary.Server.SMB1
if (entry == null) if (entry == null)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_DELETE); return new ErrorResponse(request.CommandName);
} }
if (!entry.IsDirectory && (request.SearchAttributes & SMBFileAttributes.Directory) > 0 if (!entry.IsDirectory && (request.SearchAttributes & SMBFileAttributes.Directory) > 0
|| entry.IsDirectory && (request.SearchAttributes & SMBFileAttributes.Directory) == 0) || entry.IsDirectory && (request.SearchAttributes & SMBFileAttributes.Directory) == 0)
{ {
header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID; header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID;
return new ErrorResponse(CommandName.SMB_COM_DELETE); return new ErrorResponse(request.CommandName);
} }
try try
@ -133,13 +133,13 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Debug, "Delete: Cannot delete '{0}'", request.FileName); state.LogToServer(Severity.Debug, "Delete: Cannot delete '{0}'", request.FileName);
header.Status = NTStatus.STATUS_CANNOT_DELETE; header.Status = NTStatus.STATUS_CANNOT_DELETE;
return new ErrorResponse(CommandName.SMB_COM_DELETE); return new ErrorResponse(request.CommandName);
} }
catch (UnauthorizedAccessException) catch (UnauthorizedAccessException)
{ {
state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}', Access Denied", request.FileName); state.LogToServer(Severity.Debug, "DeleteDirectory: Cannot delete '{0}', Access Denied", request.FileName);
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_DELETE); return new ErrorResponse(request.CommandName);
} }
} }
@ -149,12 +149,12 @@ namespace SMBLibrary.Server.SMB1
if (!share.HasWriteAccess(session.UserName, request.OldFileName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.OldFileName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
if (!share.HasWriteAccess(session.UserName, request.NewFileName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.NewFileName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;
@ -162,7 +162,7 @@ namespace SMBLibrary.Server.SMB1
if (sourceEntry == null) if (sourceEntry == null)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
// The file must not already exist unless we just want to upcase / downcase a filename letter // The file must not already exist unless we just want to upcase / downcase a filename letter
@ -172,7 +172,7 @@ namespace SMBLibrary.Server.SMB1
{ {
// The new file already exists. // The new file already exists.
header.Status = NTStatus.STATUS_OBJECT_NAME_COLLISION; header.Status = NTStatus.STATUS_OBJECT_NAME_COLLISION;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
try try
@ -184,13 +184,13 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Debug, "Rename: Sharing violation renaming '{0}'", request.OldFileName); state.LogToServer(Severity.Debug, "Rename: Sharing violation renaming '{0}'", request.OldFileName);
header.Status = NTStatus.STATUS_SHARING_VIOLATION; header.Status = NTStatus.STATUS_SHARING_VIOLATION;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
catch (UnauthorizedAccessException) catch (UnauthorizedAccessException)
{ {
state.LogToServer(Severity.Debug, "Rename: Cannot rename '{0}', Access Denied", request.OldFileName); state.LogToServer(Severity.Debug, "Rename: Cannot rename '{0}', Access Denied", request.OldFileName);
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_RENAME); return new ErrorResponse(request.CommandName);
} }
} }
@ -201,7 +201,7 @@ namespace SMBLibrary.Server.SMB1
if (entry == null) if (entry == null)
{ {
header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID; header.Status = NTStatus.STATUS_OBJECT_PATH_INVALID;
return new ErrorResponse(CommandName.SMB_COM_QUERY_INFORMATION); return new ErrorResponse(request.CommandName);
} }
QueryInformationResponse response = new QueryInformationResponse(); QueryInformationResponse response = new QueryInformationResponse();
@ -218,7 +218,7 @@ namespace SMBLibrary.Server.SMB1
if (!share.HasWriteAccess(session.UserName, request.FileName, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, request.FileName, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_SET_INFORMATION2); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;
@ -226,7 +226,7 @@ namespace SMBLibrary.Server.SMB1
if (entry == null) if (entry == null)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_SET_INFORMATION); return new ErrorResponse(request.CommandName);
} }
bool? isHidden = null; bool? isHidden = null;
@ -261,13 +261,13 @@ namespace SMBLibrary.Server.SMB1
if (openFile == null) if (openFile == null)
{ {
header.Status = NTStatus.STATUS_SMB_BAD_FID; header.Status = NTStatus.STATUS_SMB_BAD_FID;
return new ErrorResponse(CommandName.SMB_COM_SET_INFORMATION2); return new ErrorResponse(request.CommandName);
} }
if (!share.HasWriteAccess(session.UserName, openFile.Path, state.ClientEndPoint)) if (!share.HasWriteAccess(session.UserName, openFile.Path, state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_SET_INFORMATION2); return new ErrorResponse(request.CommandName);
} }
IFileSystem fileSystem = share.FileSystem; IFileSystem fileSystem = share.FileSystem;

View file

@ -30,7 +30,7 @@ namespace SMBLibrary.Server.SMB1
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(CommandName.SMB_COM_NT_CREATE_ANDX); return new ErrorResponse(request.CommandName);
} }
if (isExtended) if (isExtended)
{ {
@ -43,7 +43,7 @@ namespace SMBLibrary.Server.SMB1
} }
header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND; header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND;
return new ErrorResponse(CommandName.SMB_COM_NT_CREATE_ANDX); return new ErrorResponse(request.CommandName);
} }
else // FileSystemShare else // FileSystemShare
{ {
@ -60,7 +60,7 @@ namespace SMBLibrary.Server.SMB1
if (createStatus != NTStatus.STATUS_SUCCESS) if (createStatus != NTStatus.STATUS_SUCCESS)
{ {
header.Status = createStatus; header.Status = createStatus;
return new ErrorResponse(CommandName.SMB_COM_NT_CREATE_ANDX); return new ErrorResponse(request.CommandName);
} }
FileAccess fileAccess = NTFileSystemHelper.ToFileAccess(request.DesiredAccess); FileAccess fileAccess = NTFileSystemHelper.ToFileAccess(request.DesiredAccess);
@ -85,7 +85,7 @@ namespace SMBLibrary.Server.SMB1
if (openStatus != NTStatus.STATUS_SUCCESS) if (openStatus != NTStatus.STATUS_SUCCESS)
{ {
header.Status = openStatus; header.Status = openStatus;
return new ErrorResponse(CommandName.SMB_COM_NT_CREATE_ANDX); return new ErrorResponse(request.CommandName);
} }
} }
@ -93,7 +93,7 @@ namespace SMBLibrary.Server.SMB1
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(CommandName.SMB_COM_NT_CREATE_ANDX); return new ErrorResponse(request.CommandName);
} }
if (isExtended) if (isExtended)
{ {

View file

@ -30,7 +30,7 @@ namespace SMBLibrary.Server.SMB1
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
if (isExtended) if (isExtended)
{ {
@ -43,7 +43,7 @@ namespace SMBLibrary.Server.SMB1
} }
header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND; header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
else // FileSystemShare else // FileSystemShare
{ {
@ -64,7 +64,7 @@ namespace SMBLibrary.Server.SMB1
if (request.OpenMode.FileExistsOpts == FileExistsOpts.ReturnError) if (request.OpenMode.FileExistsOpts == FileExistsOpts.ReturnError)
{ {
header.Status = NTStatus.STATUS_OBJECT_NAME_COLLISION; header.Status = NTStatus.STATUS_OBJECT_NAME_COLLISION;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
else if (request.OpenMode.FileExistsOpts == FileExistsOpts.TruncateToZero) else if (request.OpenMode.FileExistsOpts == FileExistsOpts.TruncateToZero)
{ {
@ -79,18 +79,18 @@ namespace SMBLibrary.Server.SMB1
if (errorCode == (ushort)Win32Error.ERROR_SHARING_VIOLATION) if (errorCode == (ushort)Win32Error.ERROR_SHARING_VIOLATION)
{ {
header.Status = NTStatus.STATUS_SHARING_VIOLATION; header.Status = NTStatus.STATUS_SHARING_VIOLATION;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
else else
{ {
header.Status = NTStatus.STATUS_DATA_ERROR; header.Status = NTStatus.STATUS_DATA_ERROR;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
} }
catch (UnauthorizedAccessException) catch (UnauthorizedAccessException)
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
openResult = OpenResult.FileExistedAndWasTruncated; openResult = OpenResult.FileExistedAndWasTruncated;
} }
@ -104,7 +104,7 @@ namespace SMBLibrary.Server.SMB1
if (request.OpenMode.CreateFile == CreateFile.ReturnErrorIfNotExist) if (request.OpenMode.CreateFile == CreateFile.ReturnErrorIfNotExist)
{ {
header.Status = NTStatus.STATUS_NO_SUCH_FILE; header.Status = NTStatus.STATUS_NO_SUCH_FILE;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
if ((request.FileAttrs & SMBFileAttributes.Directory) > 0) if ((request.FileAttrs & SMBFileAttributes.Directory) > 0)
@ -136,7 +136,7 @@ namespace SMBLibrary.Server.SMB1
if (!fileID.HasValue) if (!fileID.HasValue)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES; header.Status = NTStatus.STATUS_TOO_MANY_OPENED_FILES;
return new ErrorResponse(CommandName.SMB_COM_OPEN_ANDX); return new ErrorResponse(request.CommandName);
} }
if (isExtended) if (isExtended)
{ {

View file

@ -22,7 +22,7 @@ namespace SMBLibrary.Server.SMB1
if (openFile == null) if (openFile == null)
{ {
header.Status = NTStatus.STATUS_SMB_BAD_FID; header.Status = NTStatus.STATUS_SMB_BAD_FID;
return new ErrorResponse(CommandName.SMB_COM_CLOSE); return new ErrorResponse(request.CommandName);
} }
state.LogToServer(Severity.Verbose, "Close: Closing file '{0}'", openFile.Path); state.LogToServer(Severity.Verbose, "Close: Closing file '{0}'", openFile.Path);

View file

@ -34,7 +34,7 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Information, "User '{0}' authentication using an empty password was rejected", message.UserName); state.LogToServer(Severity.Information, "User '{0}' authentication using an empty password was rejected", message.UserName);
header.Status = NTStatus.STATUS_ACCOUNT_RESTRICTION; header.Status = NTStatus.STATUS_ACCOUNT_RESTRICTION;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
if (loginSuccess) if (loginSuccess)
@ -44,7 +44,7 @@ namespace SMBLibrary.Server.SMB1
if (session == null) if (session == null)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_SESSIONS; header.Status = NTStatus.STATUS_TOO_MANY_SESSIONS;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
header.UID = session.UserID; header.UID = session.UserID;
response.PrimaryDomain = request.PrimaryDomain; response.PrimaryDomain = request.PrimaryDomain;
@ -56,7 +56,7 @@ namespace SMBLibrary.Server.SMB1
if (session == null) if (session == null)
{ {
header.Status = NTStatus.STATUS_TOO_MANY_SESSIONS; header.Status = NTStatus.STATUS_TOO_MANY_SESSIONS;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
header.UID = session.UserID; header.UID = session.UserID;
response.Action = SessionSetupAction.SetupGuest; response.Action = SessionSetupAction.SetupGuest;
@ -66,7 +66,7 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Information, "User '{0}' failed authentication", message.UserName); state.LogToServer(Severity.Information, "User '{0}' failed authentication", message.UserName);
header.Status = NTStatus.STATUS_LOGON_FAILURE; header.Status = NTStatus.STATUS_LOGON_FAILURE;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
if ((request.Capabilities & ServerCapabilities.LargeRead) > 0) if ((request.Capabilities & ServerCapabilities.LargeRead) > 0)
{ {
@ -97,7 +97,7 @@ namespace SMBLibrary.Server.SMB1
if (!AuthenticationMessageUtils.IsSignatureValid(messageBytes)) if (!AuthenticationMessageUtils.IsSignatureValid(messageBytes))
{ {
header.Status = NTStatus.STATUS_NOT_IMPLEMENTED; header.Status = NTStatus.STATUS_NOT_IMPLEMENTED;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
// According to [MS-SMB] 3.3.5.3, a UID MUST be allocated if the server returns STATUS_MORE_PROCESSING_REQUIRED // According to [MS-SMB] 3.3.5.3, a UID MUST be allocated if the server returns STATUS_MORE_PROCESSING_REQUIRED
@ -139,7 +139,7 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Information, "User '{0}' authentication using an empty password was rejected", authenticateMessage.UserName); state.LogToServer(Severity.Information, "User '{0}' authentication using an empty password was rejected", authenticateMessage.UserName);
header.Status = NTStatus.STATUS_ACCOUNT_RESTRICTION; header.Status = NTStatus.STATUS_ACCOUNT_RESTRICTION;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
if (loginSuccess) if (loginSuccess)
@ -157,7 +157,7 @@ namespace SMBLibrary.Server.SMB1
{ {
state.LogToServer(Severity.Information, "User '{0}' failed authentication", authenticateMessage.UserName); state.LogToServer(Severity.Information, "User '{0}' failed authentication", authenticateMessage.UserName);
header.Status = NTStatus.STATUS_LOGON_FAILURE; header.Status = NTStatus.STATUS_LOGON_FAILURE;
return new ErrorResponse(CommandName.SMB_COM_SESSION_SETUP_ANDX); return new ErrorResponse(request.CommandName);
} }
if (!isRawMessage) if (!isRawMessage)

View file

@ -33,20 +33,20 @@ namespace SMBLibrary.Server.SMB1
if (share == null) if (share == null)
{ {
header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND; header.Status = NTStatus.STATUS_OBJECT_PATH_NOT_FOUND;
return new ErrorResponse(CommandName.SMB_COM_TREE_CONNECT_ANDX); return new ErrorResponse(request.CommandName);
} }
if (!((FileSystemShare)share).HasReadAccess(session.UserName, @"\", state.ClientEndPoint)) if (!((FileSystemShare)share).HasReadAccess(session.UserName, @"\", state.ClientEndPoint))
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_TREE_CONNECT_ANDX); return new ErrorResponse(request.CommandName);
} }
} }
ushort? treeID = session.AddConnectedTree(share); ushort? treeID = session.AddConnectedTree(share);
if (!treeID.HasValue) if (!treeID.HasValue)
{ {
header.Status = NTStatus.STATUS_INSUFF_SERVER_RESOURCES; header.Status = NTStatus.STATUS_INSUFF_SERVER_RESOURCES;
return new ErrorResponse(CommandName.SMB_COM_TREE_CONNECT_ANDX); return new ErrorResponse(request.CommandName);
} }
header.TID = treeID.Value; header.TID = treeID.Value;
if (isExtended) if (isExtended)
@ -92,7 +92,7 @@ namespace SMBLibrary.Server.SMB1
if (!session.IsTreeConnected(header.TID)) if (!session.IsTreeConnected(header.TID))
{ {
header.Status = NTStatus.STATUS_SMB_BAD_TID; header.Status = NTStatus.STATUS_SMB_BAD_TID;
return new ErrorResponse(CommandName.SMB_COM_TREE_DISCONNECT); return new ErrorResponse(request.CommandName);
} }
session.RemoveConnectedTree(header.TID); session.RemoveConnectedTree(header.TID);

View file

@ -252,7 +252,7 @@ namespace SMBLibrary.Server
else if (command is LockingAndXRequest) else if (command is LockingAndXRequest)
{ {
header.Status = NTStatus.STATUS_ACCESS_DENIED; header.Status = NTStatus.STATUS_ACCESS_DENIED;
return new ErrorResponse(CommandName.SMB_COM_LOCKING_ANDX); return new ErrorResponse(command.CommandName);
} }
else if (command is OpenAndXRequest) else if (command is OpenAndXRequest)
{ {