diff options
| author | Paul Mackerras <paulus@samba.org> | 2008-09-09 21:36:13 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2008-09-09 21:36:13 -0400 |
| commit | 7e392f8c29ee045c6a29d50193d2fb10712eceb0 (patch) | |
| tree | c84097fe644c50c82f087ab7fa2d75167b8c0e16 /fs/cifs/sess.c | |
| parent | 7713fef06517d216f96ee7c8ad750e72bc08d38f (diff) | |
| parent | 93811d94f7e9bcfeed7d6ba75ea5d9c80a70ab95 (diff) | |
Merge branch 'linux-2.6'
Diffstat (limited to 'fs/cifs/sess.c')
| -rw-r--r-- | fs/cifs/sess.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c index ed150efbe27c..252fdc0567f1 100644 --- a/fs/cifs/sess.c +++ b/fs/cifs/sess.c | |||
| @@ -409,6 +409,8 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time, | |||
| 409 | #ifdef CONFIG_CIFS_WEAK_PW_HASH | 409 | #ifdef CONFIG_CIFS_WEAK_PW_HASH |
| 410 | char lnm_session_key[CIFS_SESS_KEY_SIZE]; | 410 | char lnm_session_key[CIFS_SESS_KEY_SIZE]; |
| 411 | 411 | ||
| 412 | pSMB->req.hdr.Flags2 &= ~SMBFLG2_UNICODE; | ||
| 413 | |||
| 412 | /* no capabilities flags in old lanman negotiation */ | 414 | /* no capabilities flags in old lanman negotiation */ |
| 413 | 415 | ||
| 414 | pSMB->old_req.PasswordLength = cpu_to_le16(CIFS_SESS_KEY_SIZE); | 416 | pSMB->old_req.PasswordLength = cpu_to_le16(CIFS_SESS_KEY_SIZE); |
| @@ -505,7 +507,7 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time, | |||
| 505 | unicode_ssetup_strings(&bcc_ptr, ses, nls_cp); | 507 | unicode_ssetup_strings(&bcc_ptr, ses, nls_cp); |
| 506 | } else | 508 | } else |
| 507 | ascii_ssetup_strings(&bcc_ptr, ses, nls_cp); | 509 | ascii_ssetup_strings(&bcc_ptr, ses, nls_cp); |
| 508 | } else if (type == Kerberos) { | 510 | } else if (type == Kerberos || type == MSKerberos) { |
| 509 | #ifdef CONFIG_CIFS_UPCALL | 511 | #ifdef CONFIG_CIFS_UPCALL |
| 510 | struct cifs_spnego_msg *msg; | 512 | struct cifs_spnego_msg *msg; |
| 511 | spnego_key = cifs_get_spnego_key(ses); | 513 | spnego_key = cifs_get_spnego_key(ses); |
| @@ -516,6 +518,15 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time, | |||
| 516 | } | 518 | } |
| 517 | 519 | ||
| 518 | msg = spnego_key->payload.data; | 520 | msg = spnego_key->payload.data; |
| 521 | /* check version field to make sure that cifs.upcall is | ||
| 522 | sending us a response in an expected form */ | ||
| 523 | if (msg->version != CIFS_SPNEGO_UPCALL_VERSION) { | ||
| 524 | cERROR(1, ("incorrect version of cifs.upcall (expected" | ||
| 525 | " %d but got %d)", | ||
| 526 | CIFS_SPNEGO_UPCALL_VERSION, msg->version)); | ||
| 527 | rc = -EKEYREJECTED; | ||
| 528 | goto ssetup_exit; | ||
| 529 | } | ||
| 519 | /* bail out if key is too long */ | 530 | /* bail out if key is too long */ |
| 520 | if (msg->sesskey_len > | 531 | if (msg->sesskey_len > |
| 521 | sizeof(ses->server->mac_signing_key.data.krb5)) { | 532 | sizeof(ses->server->mac_signing_key.data.krb5)) { |
