CIFS: Fix log messages in packet checking for SMB2
Signed-off-by: Pavel Shilovsky <pshilovsky@samba.org> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
b7ca692896
commit
7411286088
@ -52,7 +52,8 @@ check_smb2_hdr(struct smb2_hdr *hdr, __u64 mid)
|
|||||||
cERROR(1, "Bad protocol string signature header %x",
|
cERROR(1, "Bad protocol string signature header %x",
|
||||||
*(unsigned int *) hdr->ProtocolId);
|
*(unsigned int *) hdr->ProtocolId);
|
||||||
if (mid != hdr->MessageId)
|
if (mid != hdr->MessageId)
|
||||||
cERROR(1, "Mids do not match");
|
cERROR(1, "Mids do not match: %llu and %llu", mid,
|
||||||
|
hdr->MessageId);
|
||||||
}
|
}
|
||||||
cERROR(1, "Bad SMB detected. The Mid=%llu", hdr->MessageId);
|
cERROR(1, "Bad SMB detected. The Mid=%llu", hdr->MessageId);
|
||||||
return 1;
|
return 1;
|
||||||
@ -107,7 +108,7 @@ smb2_check_message(char *buf, unsigned int length)
|
|||||||
* ie Validate the wct via smb2_struct_sizes table above
|
* ie Validate the wct via smb2_struct_sizes table above
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (length < 2 + sizeof(struct smb2_hdr)) {
|
if (length < sizeof(struct smb2_pdu)) {
|
||||||
if ((length >= sizeof(struct smb2_hdr)) && (hdr->Status != 0)) {
|
if ((length >= sizeof(struct smb2_hdr)) && (hdr->Status != 0)) {
|
||||||
pdu->StructureSize2 = 0;
|
pdu->StructureSize2 = 0;
|
||||||
/*
|
/*
|
||||||
@ -121,15 +122,15 @@ smb2_check_message(char *buf, unsigned int length)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (len > CIFSMaxBufSize + MAX_SMB2_HDR_SIZE - 4) {
|
if (len > CIFSMaxBufSize + MAX_SMB2_HDR_SIZE - 4) {
|
||||||
cERROR(1, "SMB length greater than maximum, mid=%lld", mid);
|
cERROR(1, "SMB length greater than maximum, mid=%llu", mid);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check_smb2_hdr(hdr, mid))
|
if (check_smb2_hdr(hdr, mid))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (hdr->StructureSize != SMB2_HEADER_SIZE) {
|
if (hdr->StructureSize != SMB2_HEADER_STRUCTURE_SIZE) {
|
||||||
cERROR(1, "Illegal structure size %d",
|
cERROR(1, "Illegal structure size %u",
|
||||||
le16_to_cpu(hdr->StructureSize));
|
le16_to_cpu(hdr->StructureSize));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -161,8 +162,9 @@ smb2_check_message(char *buf, unsigned int length)
|
|||||||
if (4 + len != clc_len) {
|
if (4 + len != clc_len) {
|
||||||
cFYI(1, "Calculated size %u length %u mismatch mid %llu",
|
cFYI(1, "Calculated size %u length %u mismatch mid %llu",
|
||||||
clc_len, 4 + len, mid);
|
clc_len, 4 + len, mid);
|
||||||
if (clc_len == 4 + len + 1) /* BB FIXME (fix samba) */
|
/* server can return one byte more */
|
||||||
return 0; /* BB workaround Samba 3 bug SessSetup rsp */
|
if (clc_len == 4 + len + 1)
|
||||||
|
return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -87,10 +87,6 @@
|
|||||||
|
|
||||||
#define SMB2_PROTO_NUMBER __constant_cpu_to_le32(0x424d53fe)
|
#define SMB2_PROTO_NUMBER __constant_cpu_to_le32(0x424d53fe)
|
||||||
|
|
||||||
#define SMB2_HEADER_SIZE __constant_le16_to_cpu(64)
|
|
||||||
|
|
||||||
#define SMB2_ERROR_STRUCTURE_SIZE2 __constant_le16_to_cpu(9)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SMB2 Header Definition
|
* SMB2 Header Definition
|
||||||
*
|
*
|
||||||
@ -99,6 +95,9 @@
|
|||||||
* "PDU" : "Protocol Data Unit" (ie a network "frame")
|
* "PDU" : "Protocol Data Unit" (ie a network "frame")
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define SMB2_HEADER_STRUCTURE_SIZE __constant_le16_to_cpu(64)
|
||||||
|
|
||||||
struct smb2_hdr {
|
struct smb2_hdr {
|
||||||
__be32 smb2_buf_length; /* big endian on wire */
|
__be32 smb2_buf_length; /* big endian on wire */
|
||||||
/* length is only two or three bytes - with
|
/* length is only two or three bytes - with
|
||||||
@ -140,6 +139,9 @@ struct smb2_pdu {
|
|||||||
* command code name for the struct. Note that structures must be packed.
|
* command code name for the struct. Note that structures must be packed.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define SMB2_ERROR_STRUCTURE_SIZE2 __constant_le16_to_cpu(9)
|
||||||
|
|
||||||
struct smb2_err_rsp {
|
struct smb2_err_rsp {
|
||||||
struct smb2_hdr hdr;
|
struct smb2_hdr hdr;
|
||||||
__le16 StructureSize;
|
__le16 StructureSize;
|
||||||
|
Loading…
Reference in New Issue
Block a user