aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifssmb.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2007-10-16 13:10:44 -0400
committerSteve French <sfrench@us.ibm.com>2007-10-16 13:10:44 -0400
commite187e44eb8902089da0c7725d606b0e20fee981d (patch)
tree4390f7d3e20ce5fb0e0b0480d5b9c89b6fce45af /fs/cifs/cifssmb.c
parent7111d2144f17155b66e89b3655fcddbedefcf8a6 (diff)
[CIFS] parse server_GUID in SPNEGO negProt response
SPNEGO NegProt response also contains a server_GUID. Parse it as we would for RawNTLMSSP. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/cifssmb.c')
-rw-r--r--fs/cifs/cifssmb.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c
index 9eef72492504..14dabbbd8134 100644
--- a/fs/cifs/cifssmb.c
+++ b/fs/cifs/cifssmb.c
@@ -621,22 +621,26 @@ CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses)
621 if ((pSMBr->hdr.Flags2 & SMBFLG2_EXT_SEC) && 621 if ((pSMBr->hdr.Flags2 & SMBFLG2_EXT_SEC) &&
622 (server->capabilities & CAP_EXTENDED_SECURITY)) { 622 (server->capabilities & CAP_EXTENDED_SECURITY)) {
623 count = pSMBr->ByteCount; 623 count = pSMBr->ByteCount;
624 if (count < 16) 624 if (count < 16) {
625 rc = -EIO; 625 rc = -EIO;
626 else if (count == 16) { 626 goto neg_err_exit;
627 server->secType = RawNTLMSSP; 627 }
628 if (server->socketUseCount.counter > 1) { 628
629 if (memcmp(server->server_GUID, 629 if (server->socketUseCount.counter > 1) {
630 pSMBr->u.extended_response. 630 if (memcmp(server->server_GUID,
631 GUID, 16) != 0) { 631 pSMBr->u.extended_response.
632 cFYI(1, ("server UID changed")); 632 GUID, 16) != 0) {
633 memcpy(server->server_GUID, 633 cFYI(1, ("server UID changed"));
634 pSMBr->u.extended_response.GUID,
635 16);
636 }
637 } else
638 memcpy(server->server_GUID, 634 memcpy(server->server_GUID,
639 pSMBr->u.extended_response.GUID, 16); 635 pSMBr->u.extended_response.GUID,
636 16);
637 }
638 } else
639 memcpy(server->server_GUID,
640 pSMBr->u.extended_response.GUID, 16);
641
642 if (count == 16) {
643 server->secType = RawNTLMSSP;
640 } else { 644 } else {
641 rc = decode_negTokenInit(pSMBr->u.extended_response. 645 rc = decode_negTokenInit(pSMBr->u.extended_response.
642 SecurityBlob, 646 SecurityBlob,