(MS CIFS) Errata
(MS CIFS) Errata
This topic lists the Errata found in the MS-CIFS document since it was last RSS
published. Since this topic is updated frequently, we recommend that you
subscribe to these RSS or Atom feeds to receive update notifications. Atom
Errata are subject to the same terms as the Open Specifications documentation
referenced.
Errata below are for Protocol Document Version V29.0 – 2020/03/04
Errata
Publishe
d* Description
2020/08/ In Section 2.2.2.3.4 SET Information Level Codes the table was updated
17
Changed from:
Changed to:
Changed from:
Changed to:
Changed from:
Changed to:
Changed from:
Changed to:
Errata
Publishe
d* Description
Changed from:
Changed to:
In Section 3.2.4.13 Application Requests Setting File Attributes, the following was added:
● The absolute new end-of-file position as a byte offset from the start of the file.
Changed to:
● Unless otherwise noted, following a successful Protocol Negotiation an
SMB_COM_SESSION_SETUP_ANDX (section 2.2.4.53) command MUST be used to establish an
SMB session before any other SMB commands are sent. Multiple SMB sessions can be set up per
SMB connection.
2020/06/ In Section 2.2.2.3.3, QUERY Information Level Codes, revised description for
22 SMB_QUERY_FILE_ALL_INFO changing SMB_FILE_QUERY_STANDARD_INFO to
SMB_QUERY_FILE_STANDARD_INFO & SMB_FILE_EA_INFO to SMB_QUERY_FILE_EA_INFO.
Changed from:
Query the
SMB_QUERY_FILE_BASIC_INFO,
SMB_FILE_QUERY_STANDARD_INFO,
SMB_FILE_EA_INFO, and
SMB_QUERY_FILE_NAME_INFO data as
well as access flags, access mode, and NT
alignment information in a single LANMAN
SMB_QUERY_FILE_ALL_INFO 0x0107 request.
Changed to:
Query the
SMB_QUERY_FILE_BASIC_INFO,
SMB_QUERY_FILE_STANDARD_INFO,
SMB_QUERY_FILE_EA_INFO, and
SMB_QUERY_FILE_NAME_INFO data as
well as access flags, access mode, and NT
alignment information in a single LANMAN
SMB_QUERY_FILE_ALL_INFO 0x0107 request.
Changed from:
The write and unlock command has the effect of writing to a range of bytes and then unlocking
them. This command is usually associated with an earlier usage of
SMB_COM_LOCK_AND_READ (section 2.2.4.20) on the same range of bytes. The server's
response field ByteCountWritten indicates the number of bytes actually written.
Changed to:
The write and unlock command has the effect of writing to a range of bytes and then unlocking
them. This command is usually associated with an earlier usage of
SMB_COM_LOCK_AND_READ (section 2.2.4.20) on the same range of bytes. The server's
response field CountOfBytesWritten indicates the number of bytes actually written.
Changed from:
DataLength (2 bytes): This field is the number of bytes read and included in the response. The
value of this field MUST NOT cause the message to exceed the client's maximum buffer size as
specified in MaxBufferSize of the SMB_COM_SESSION_SETUP_AND_X (section 2.2.4.53) client
request.
Changed to:
DataLength (2 bytes): This field is the number of bytes read and included in the response. The
value of this field MUST NOT cause the message to exceed the client's maximum buffer size as
specified in MaxBufferSize of the SMB_COM_SESSION_SETUP_ANDX (section 2.2.4.53) client
request.
Changed from:
The SMB_COM_TRANSACTON response has two possible formats.
Errata
Publishe
d* Description
Changed to:
The SMB_COM_TRANSACTION response has two possible formats.
Changed from:
Opens a file based on the FileId. If this option is set, the server
MUST fail the request with STATUS_NOT_SUPPORTED in the Status
FILE_OPEN_BY_FILE_ID field of the SMB Header in the server response.
0x00002000
Changed to:
Opens a file based on the FID. If this option is set, the server
MUST fail the request with STATUS_NOT_SUPPORTED in the Status
FILE_OPEN_BY_FILE_ID field of the SMB Header in the server response.
0x00002000
Changed from:
Opens a file based on the FileId. If this option is set, the server
MUST fail the request with STATUS_NOT_SUPPORTED in the Status
FILE_OPEN_BY_FILE_ID field of the SMB Header in the server response.
0x00002000
Changed to:
Opens a file based on the FID. If this option is set, the server
MUST fail the request with STATUS_NOT_SUPPORTED in the Status
FILE_OPEN_BY_FILE_ID field of the SMB Header in the server response.
0x00002000
Changed from:
This information level structure is used in TRANS2_FIND_FIRST2 (section 2.2.6.2) and
TRANS2_FIND_NEXT2 (section 2.2.6.3) responses to return a combination of the
SMB_FILE_FULL_DIRECTORY_INFO and SMB_FIND_FILE_NAMES_INFO (section 2.2.8.1.6) data
for all files that match the request's search criteria.
Changed to:
This information level structure is used in TRANS2_FIND_FIRST2 (section 2.2.6.2) and
TRANS2_FIND_NEXT2 (section 2.2.6.3) responses to return a combination of the
SMB_FIND_FILE_FULL_DIRECTORY_INFO (section 2.2.8.1.5) and
SMB_FIND_FILE_NAMES_INFO (section 2.2.8.1.6) data for all files that match the request's search
criteria.
Errata
Publishe
d* Description
Changed from:
This information level structure is used in TRANS2_QUERY_PATH_INFORMATION (section 2.2.6.6)
and TRANS2_QUERY_FILE_INFORMATION (section 2.2.6.8) responses to return the
SMB_QUERY_FILE_BASIC_INFO, SMB_FILE_QUERY_STANDARD_INFO, SMB_FILE_EA_INFO, and
SMB_QUERY_FILE_NAME_INFO data as well as access flags, access mode, and alignment
information in a single request for the file specified in the request.
Changed to:
This information level structure is used in TRANS2_QUERY_PATH_INFORMATION (section 2.2.6.6)
and TRANS2_QUERY_FILE_INFORMATION (section 2.2.6.8) responses to return the
SMB_QUERY_FILE_BASIC_INFO, SMB_QUERY_FILE_STANDARD_INFO,
SMB_QUERY_FILE_EA_INFO, and SMB_QUERY_FILE_NAME_INFO data as well as access flags,
access mode, and alignment information in a single request for the file specified in the request.
Changed from:
Client.TreeConnect.TreeID: The treeID (TID) that identifies this tree connect as returned by the
server in the header of the SMB_COM_TREE_CONNECT Response (section 2.2.4.50.2) or the
SMB_COM_TREE_CONNECT_ANDX Response (section 2.2.4.55.2).
Changed to:
Client.TreeConnect.TreeID: The TreeID (TID) that identifies this tree connect as returned by the
server in the header of the SMB_COM_TREE_CONNECT Response (section 2.2.4.50.2) or the
SMB_COM_TREE_CONNECT_ANDX Response (section 2.2.4.55.2).
In Section 3.2.4.2.4, User Authentication, revised description changing UnicodePasswordLength to
UnicodePasswordLen and OEMPasswordLength to OEMPasswordLen.
Changed from:
● If the server supports Unicode (as indicated in Client.Connection.ServerCapabilities) the
client MAY send the plaintext password in Unicode. The Unicode password is placed into
the UnicodePassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an array
of bytes (not a null-terminated string). No alignment padding is used. The
UnicodePasswordLength field is set to the length, in bytes, of the Unicode password.
● If neither the client nor the server supports Unicode, or the client sends the password
in OEM character set format, the password is placed into the OEMPassword field of the
SMB_COM_SESSION_SETUP_ANDX Request as an array of bytes (not a null-terminated
string). The OEMPasswordLength field is set to the length, in bytes, of the password.
...
The LAN Manager (LM) response and the LAN Manager version 2 (LMv2) response are mutually
exclusive. The implementation MUST select either the LM or the LMv2 response and send it in the
OEMPassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an array of bytes (not a
null-terminated string). The OEMPasswordLength field MUST be set to the length in bytes of the
LM or LMv2 response.
The NT LAN Manager (NTLM) response and the NT LAN Manager version 2 (NTLMv2) response are
mutually exclusive. The implementation MUST select either the NTLM or the NTLMv2 response and
send it in the UnicodePassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an
array of bytes (not a null-terminated string). The UnicodePasswordLength field MUST be set to the
length, in bytes of the NTLM or NTLMv2 response.
Errata
Publishe
d* Description
Changed to:
● If the server supports Unicode (as indicated in Client.Connection.ServerCapabilities) the
client MAY send the plaintext password in Unicode. The Unicode password is placed into
the UnicodePassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an array
of bytes (not a null-terminated string). No alignment padding is used. The
UnicodePasswordLen field is set to the length, in bytes, of the Unicode password.
● If neither the client nor the server supports Unicode, or the client sends the password
in OEM character set format, the password is placed into the OEMPassword field of the
SMB_COM_SESSION_SETUP_ANDX Request as an array of bytes (not a null-terminated
string). The OEMPasswordLen field is set to the length, in bytes, of the password.
...
The LAN Manager (LM) response and the LAN Manager version 2 (LMv2) response are mutually
exclusive. The implementation MUST select either the LM or the LMv2 response and send it in the
OEMPassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an array of bytes (not a
null-terminated string). The OEMPasswordLen field MUST be set to the length in bytes of the LM or
LMv2 response.
The NT LAN Manager (NTLM) response and the NT LAN Manager version 2 (NTLMv2) response are
mutually exclusive. The implementation MUST select either the NTLM or the NTLMv2 response and
send it in the UnicodePassword field of the SMB_COM_SESSION_SETUP_ANDX Request as an
array of bytes (not a null-terminated string). The UnicodePasswordLen field MUST be set to the
length, in bytes of the NTLM or NTLMv2 response.
Changed from:
If an SMB_COM_RAW_READ is in progress and the message is a raw data transfer, the message
MUST be handled as described in section 3.2.5.16.
Changed to:
If an SMB_COM_READ_RAW is in progress and the message is a raw data transfer, the message
MUST be handled as described in section 3.2.5.16.
Changed from:
● If another process has the file open, and that process has an OpLock on the file, and the process
has asked for extended notification (Batch OpLock), the rename request MUST block until the
server has sent an OpLock break request to the owner of the OpLock, as specified in section
3.3.4.2, and either received a response or the OpLock break time-out has expired.<259> The
server MUST have the OPLOCK_RELEASE flag set in the TypeofLock field of the request. The
server MUST set the NewOplockLevel field of the request to 0x00. If the process holding the
OpLock closes the file (thus freeing the OpLock) the rename takes place. If not, the rename MUST
fail with STATUS_SHARING_VIOLATION.
Changed to:
● If another process has the file open, and that process has an OpLock on the file, and the process
has asked for extended notification (Batch OpLock), the rename request MUST block until the
server has sent an OpLock break request to the owner of the OpLock, as specified in section
3.3.4.2, and either received a response or the OpLock break time-out has expired. The server
MUST have the OPLOCK_RELEASE flag set in the TypeOfLock field of the request. The server MUST
set the NewOpLockLevel field of the request to 0x00. If the process holding the OpLock closes the
file (thus freeing the OpLock) the rename takes place. If not, the rename MUST fail with
STATUS_SHARING_VIOLATION.
Errata
Publishe
d* Description
Changed from:
● The server MUST attempt to read from the underlying object store for the file indicated by the
FID in the response. It MUST start reading from the file at the offset indicated by the Offset field
in the request, or by the combination of Offset and OffsetHigh if CAP_LARGE_FILES was
negotiated. The client MUST read BytesToReturn bytes or until EOF, whichever comes first.
Changed to:
● The server MUST attempt to read from the underlying object store for the file indicated by the
FID in the response. It MUST start reading from the file at the offset indicated by the Offset field
in the request, or by the combination of Offset and OffsetHigh if CAP_LARGE_FILES was
negotiated. The client MUST read MaxCountOfBytesToReturn bytes or until EOF, whichever comes
first.
Changed from:
● The server MUST set CreationTime and IdleTime to be current time.
Changed to:
● The server MUST set CreationTime and Server.Connection.IdleTime to be current time.
Changed from:
● If the InformationLevel field value is neither SMB_NT_RENAME_RENAME FILE (0x104) nor
SMB_NT_RENAME_SET_LINK_INFO (0x103), the server SHOULD fail the request with
STATUS_INVALID_SMB (ERRSRV/ERRerror).
Changed to:
● If the InformationLevel field value is neither SMB_NT_RENAME_RENAME_FILE (0x104) nor
SMB_NT_RENAME_SET_LINK_INFO (0x103), the server SHOULD fail the request with
STATUS_INVALID_SMB (ERRSRV/ERRerror).