[cifs-protocol] Status: SRX091209600095 Trans2SetPathInfo() returns truncated SMB header

Bill Wesse billwe at microsoft.com
Thu Dec 31 07:03:56 MST 2009


Good morning Tim.

I filed a Technical Documentation Issue (TDI) concerning the [MS-SMB] 2.2 Message Syntax error returns. This is still under investigation by our document developers, and I will advise you as soon as some results are forthcoming.

I included your comments and questions in the TDI:

MS-CIFS does say that a DOS error or an NT_STATUS error may be returned <for a given command>, but I don't see any indication in the documentation of when a DOS error should be returned instead of an NT_STATUS error. In addition, WordCount and ByteCount might not be present in the response.

Specifically, some commands override the SMB_FLAGS2_NT_STATUS Flags2 bit; for example, SMB_COM_TRANSACTION2 / TRANS2_SET_PATH_INFORMATION / SMB_SET_FILE_END_OF_FILE_INFO (an invalid level) clears SMB_FLAGS2_NT_STATUS on return, and sets the error to:

DOSError.ErrorClass (0x0001,   1d) : SMB_ERR_CLASS_DOS
DOSError.Error      (0x007C, 124d) : SrvErrorCode(STATUS_OS2_INVALID_LEVEL)
see attached file: trans2setpathinfo_against_win7_2.cap (frames 39 & 40)

Is it possible to make this explicit in the docs or is this a case where it's purposefully left ambiguous?


Regards,
Bill Wesse
MCSE, MCTS / Senior Escalation Engineer, US-CSS DSC PROTOCOL TEAM
8055 Microsoft Way
Charlotte, NC 28273
TEL:  +1(980) 776-8200
CELL: +1(704) 661-5438
FAX:  +1(704) 665-9606


-----Original Message-----
From: Bill Wesse 
Sent: Friday, December 11, 2009 10:19 AM
To: 'Tim Prouty'
Cc: Jeremy Allison; cifs-protocol at samba.org; pfif at tridgell.net
Subject: RE: New case: SRX091209600095 Trans2SetPathInfo() returns truncated SMB header

Good morning Tim. There are indeed other cases where WordCount and ByteCount are not sent; I have located several dozen potential SMB response cases where this could occur.

The Technical Document Issue (TDI) I filed yesterday includes this as an issue, along with when a DOSError is returned with the header.Flags2 SMB_FLAGS2_NT_STATUS bit clear in the response when it was set in the request - which is all about where this will be documented - and who will do the detailing. Whether or not WordCount and ByteCount are absent for all DOSError returns is not yet something I can yet provide an authoritative answer for.

My thinking is that [MS-SMB] (Appendix A: Product Behavior), [MS-CIFS-Preview], and the Microsoft Open Specification Support Team Blog are all viable targets for the information in question.

[MS-CIFS-Preview]: Common Internet File System (CIFS)
http://msdn.microsoft.com/en-us/library/ee794904.aspx

[MS-SMB]: Server Message Block (SMB) Protocol Specification
http://msdn.microsoft.com/en-us/library/cc246231(PROT.13).aspx

Microsoft Open Specification Support Team Blog
http://blogs.msdn.com/OpenSpecification/

Today, I will be concentrating on the final steps I need to take before filing a TDI against the other case (SRX091124600335 : [MS-SMB] Trans2SetPathInfo() not enforcing share mode).

Regards,
Bill Wesse
MCSE, MCTS / Senior Escalation Engineer, US-CSS DSC PROTOCOL TEAM
8055 Microsoft Way
Charlotte, NC 28273
TEL:  +1(980) 776-8200
CELL: +1(704) 661-5438
FAX:  +1(704) 665-9606


-----Original Message-----
From: Tim Prouty [mailto:tim.prouty at isilon.com] 
Sent: Thursday, December 10, 2009 2:39 PM
To: Bill Wesse
Cc: Jeremy Allison; cifs-protocol at samba.org; pfif at tridgell.net
Subject: Re: New case: SRX091209600095 Trans2SetPathInfo() returns truncated SMB header

On Dec 9, 2009, at 12:31 PM, Bill Wesse wrote:

> This is processed as follows before appearing on the wire:
>
> If the SrvIsSrvStatus(Status) check passes (which it should, in this  
> case, per the included #defines from cifs.h), the error code is  
> truncated using the SrvErrorClass(Status) macro (also from cifs.h),  
> and the error class is set to SMB_ERR_CLASS_DOS (0x1). The  
> SMB_FLAGS2_NT_STATUS bit is cleared in the response header.Flags2  
> field, and the return context is marked to omit WordCount and  
> ByteCount.

Hmm, I didn't know that there are cases where the WordCount and  
ByteCount are omitted.  Is this the case for all DOS errors?  Is it  
possible to document the cases when they are omitted?  As it is there  
is samba client code that detects an omitted WordCount/ByteCount in  
this situation as an error, so if this is correct server behavior  
we'll need to update the client.

Thank you for your detailed investigation!

-Tim




More information about the cifs-protocol mailing list