Do not send ClientGUID on SMB2.02 dialect
authorSteve French <smfrench@gmail.com>
Tue, 13 May 2014 20:37:45 +0000 (13:37 -0700)
committerSteve French <smfrench@gmail.com>
Wed, 21 May 2014 17:18:06 +0000 (10:18 -0700)
ClientGUID must be zero for SMB2.02 dialect.  See section 2.2.3
of MS-SMB2. For SMB2.1 and later it must be non-zero.

Signed-off-by: Steve French <smfrench@gmail.com>
CC: Sachin Prabhu <sprabhu@redhat.com>
fs/cifs/smb2pdu.c

index dc44610..0feb743 100644 (file)
@@ -375,7 +375,12 @@ SMB2_negotiate(const unsigned int xid, struct cifs_ses *ses)
 
        req->Capabilities = cpu_to_le32(ses->server->vals->req_capabilities);
 
-       memcpy(req->ClientGUID, server->client_guid, SMB2_CLIENT_GUID_SIZE);
+       /* ClientGUID must be zero for SMB2.02 dialect */
+       if (ses->server->vals->protocol_id == SMB20_PROT_ID)
+               memset(req->ClientGUID, 0, SMB2_CLIENT_GUID_SIZE);
+       else
+               memcpy(req->ClientGUID, server->client_guid,
+                       SMB2_CLIENT_GUID_SIZE);
 
        iov[0].iov_base = (char *)req;
        /* 4 for rfc1002 length field */