From 8722f4530021cfbb602746f5581c9109c50eedea Mon Sep 17 00:00:00 2001 From: Tal Aloni Date: Tue, 3 Jan 2017 16:04:05 +0200 Subject: [PATCH] Improved compliance with MS-SMB when NTTransactIOCTLRequest.IsFsctl is set to false --- SMBLibrary/Enums/NTStatus.cs | 1 + .../Server/ResponseHelpers/NTTransactHelper.cs | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/SMBLibrary/Enums/NTStatus.cs b/SMBLibrary/Enums/NTStatus.cs index 69d887e..bf67104 100644 --- a/SMBLibrary/Enums/NTStatus.cs +++ b/SMBLibrary/Enums/NTStatus.cs @@ -25,6 +25,7 @@ namespace SMBLibrary STATUS_DISK_FULL = 0xC000007F, STATUS_MEDIA_WRITE_PROTECTED = 0xC00000A2, STATUS_FILE_IS_A_DIRECTORY = 0xC00000BA, + STATUS_NOT_SUPPORTED = 0xC00000BB, STATUS_CANNOT_DELETE = 0xC0000121, STATUS_INVALID_SMB = 0x00010002, // CIFS/SMB1: A corrupt or invalid SMB request was received diff --git a/SMBLibrary/Server/ResponseHelpers/NTTransactHelper.cs b/SMBLibrary/Server/ResponseHelpers/NTTransactHelper.cs index c3624d1..b39396b 100644 --- a/SMBLibrary/Server/ResponseHelpers/NTTransactHelper.cs +++ b/SMBLibrary/Server/ResponseHelpers/NTTransactHelper.cs @@ -1,4 +1,4 @@ -/* Copyright (C) 2014 Tal Aloni . All rights reserved. +/* Copyright (C) 2014-2017 Tal Aloni . All rights reserved. * * You can redistribute this program and/or modify it under the terms of * the GNU Lesser Public License as published by the Free Software Foundation, @@ -126,10 +126,18 @@ namespace SMBLibrary.Server response.Data = objectID.GetBytes(); return response; } + else + { + header.Status = NTStatus.STATUS_NOT_IMPLEMENTED; + return null; + } + } + else + { + // [MS-SMB] If the IsFsctl field is set to zero, the server SHOULD fail the request with STATUS_NOT_SUPPORTED + header.Status = NTStatus.STATUS_NOT_SUPPORTED; + return null; } - - header.Status = NTStatus.STATUS_NOT_IMPLEMENTED; - return null; } private static void PrepareResponse(NTTransactResponse response, byte[] responseSetup, byte[] responseParameters, byte[] responseData, int maxBufferSize, List sendQueue)