SMBServer: SMB1: Return STATUS_BAD_DEVICE_TYPE when applicable

This commit is contained in:
Tal Aloni 2017-09-05 22:39:01 +03:00
parent 928bb59c90
commit a6f4f166f6

View file

@ -24,6 +24,12 @@ namespace SMBLibrary.Server.SMB1
OptionalSupportFlags supportFlags; OptionalSupportFlags supportFlags;
if (String.Equals(shareName, NamedPipeShare.NamedPipeShareName, StringComparison.OrdinalIgnoreCase)) if (String.Equals(shareName, NamedPipeShare.NamedPipeShareName, StringComparison.OrdinalIgnoreCase))
{ {
if (request.Service != ServiceName.AnyType && request.Service != ServiceName.NamedPipe)
{
header.Status = NTStatus.STATUS_BAD_DEVICE_TYPE;
return new ErrorResponse(request.CommandName);
}
share = services; share = services;
serviceName = ServiceName.NamedPipe; serviceName = ServiceName.NamedPipe;
supportFlags = OptionalSupportFlags.SMB_SUPPORT_SEARCH_BITS | OptionalSupportFlags.SMB_CSC_NO_CACHING; supportFlags = OptionalSupportFlags.SMB_SUPPORT_SEARCH_BITS | OptionalSupportFlags.SMB_CSC_NO_CACHING;
@ -37,6 +43,12 @@ namespace SMBLibrary.Server.SMB1
return new ErrorResponse(request.CommandName); return new ErrorResponse(request.CommandName);
} }
if (request.Service != ServiceName.AnyType && request.Service != ServiceName.DiskShare)
{
header.Status = NTStatus.STATUS_BAD_DEVICE_TYPE;
return new ErrorResponse(request.CommandName);
}
serviceName = ServiceName.DiskShare; serviceName = ServiceName.DiskShare;
supportFlags = OptionalSupportFlags.SMB_SUPPORT_SEARCH_BITS | GetCachingSupportFlags(((FileSystemShare)share).CachingPolicy); supportFlags = OptionalSupportFlags.SMB_SUPPORT_SEARCH_BITS | GetCachingSupportFlags(((FileSystemShare)share).CachingPolicy);