aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.osdl.org>2006-12-08 19:46:30 -0500
committerLinus Torvalds <torvalds@woody.osdl.org>2006-12-08 19:46:30 -0500
commiteb991b39385c7b04923d701764a34694ec54b53d (patch)
treeb3a9e13f8d4596969dd06fa010a6968de15c166f
parent88032b322a38b37335c8cb2e3473a45c81d280eb (diff)
parent33ec32fae0e2c4433bfd1e74cbde6cb16604a719 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: [CIFS] Fix NTLMv2 mounts to Windows servers
-rw-r--r--fs/cifs/CHANGES3
-rw-r--r--fs/cifs/cifsencrypt.c4
-rw-r--r--fs/cifs/cifspdu.h8
3 files changed, 12 insertions, 3 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES
index 0b3c37ef52e0..3539d6ef9611 100644
--- a/fs/cifs/CHANGES
+++ b/fs/cifs/CHANGES
@@ -5,7 +5,8 @@ Allow null user to be specified on mount ("username="). Do not return
5EINVAL on readdir when filldir fails due to overwritten blocksize 5EINVAL on readdir when filldir fails due to overwritten blocksize
6(fixes FC problem). Return error in rename 2nd attempt retry (ie report 6(fixes FC problem). Return error in rename 2nd attempt retry (ie report
7if rename by handle also fails, after rename by path fails, we were 7if rename by handle also fails, after rename by path fails, we were
8not reporting whether the retry worked or not). 8not reporting whether the retry worked or not). Fix NTLMv2 to
9work to Windows servers (mount with option "sec=ntlmv2").
9 10
10Version 1.45 11Version 1.45
11------------ 12------------
diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c
index 4bc250b2d9fc..fdeda519eace 100644
--- a/fs/cifs/cifsencrypt.c
+++ b/fs/cifs/cifsencrypt.c
@@ -372,8 +372,10 @@ void setup_ntlmv2_rsp(struct cifsSesInfo * ses, char * resp_buf,
372 buf->time = cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); 372 buf->time = cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME));
373 get_random_bytes(&buf->client_chal, sizeof(buf->client_chal)); 373 get_random_bytes(&buf->client_chal, sizeof(buf->client_chal));
374 buf->reserved2 = 0; 374 buf->reserved2 = 0;
375 buf->names[0].type = 0; 375 buf->names[0].type = cpu_to_le16(NTLMSSP_DOMAIN_TYPE);
376 buf->names[0].length = 0; 376 buf->names[0].length = 0;
377 buf->names[1].type = 0;
378 buf->names[1].length = 0;
377 379
378 /* calculate buf->ntlmv2_hash */ 380 /* calculate buf->ntlmv2_hash */
379 rc = calc_ntlmv2_hash(ses, nls_cp); 381 rc = calc_ntlmv2_hash(ses, nls_cp);
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index 6df9dadba647..068ef51edbf7 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -580,6 +580,12 @@ typedef union smb_com_session_setup_andx {
580 580
581/* format of NLTMv2 Response ie "case sensitive password" hash when NTLMv2 */ 581/* format of NLTMv2 Response ie "case sensitive password" hash when NTLMv2 */
582 582
583#define NTLMSSP_SERVER_TYPE 1
584#define NTLMSSP_DOMAIN_TYPE 2
585#define NTLMSSP_FQ_DOMAIN_TYPE 3
586#define NTLMSSP_DNS_DOMAIN_TYPE 4
587#define NTLMSSP_DNS_PARENT_TYPE 5
588
583struct ntlmssp2_name { 589struct ntlmssp2_name {
584 __le16 type; 590 __le16 type;
585 __le16 length; 591 __le16 length;
@@ -593,7 +599,7 @@ struct ntlmv2_resp {
593 __le64 time; 599 __le64 time;
594 __u64 client_chal; /* random */ 600 __u64 client_chal; /* random */
595 __u32 reserved2; 601 __u32 reserved2;
596 struct ntlmssp2_name names[1]; 602 struct ntlmssp2_name names[2];
597 /* array of name entries could follow ending in minimum 4 byte struct */ 603 /* array of name entries could follow ending in minimum 4 byte struct */
598} __attribute__((packed)); 604} __attribute__((packed));
599 605