diff options
| author | Steve French <sfrench@us.ibm.com> | 2006-06-27 19:50:57 +0000 | 
|---|---|---|
| committer | Steve French <sfrench@us.ibm.com> | 2006-06-27 19:50:57 +0000 | 
| commit | 0223cf0b10bdb3b557d8884b1a957cc64be843c3 (patch) | |
| tree | fb4247a30b8df1fd00e9cab04132795e826fa83a /fs | |
| parent | 750d1151a6c95ef9b9a188bb7cff6b80ee30da17 (diff) | |
| download | linux-0223cf0b10bdb3b557d8884b1a957cc64be843c3.tar.bz2 | |
[CIFS] Fix alignment of unicode strings in previous patch
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/cifs/sess.c | 22 | 
1 files changed, 15 insertions, 7 deletions
| diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c index 7737edd1baf1..b7d49c03985c 100644 --- a/fs/cifs/sess.c +++ b/fs/cifs/sess.c @@ -83,11 +83,11 @@ static void unicode_ssetup_strings(char ** pbcc_area, struct cifsSesInfo *ses,  	/* BB FIXME add check that strings total less  	than 335 or will need to send them as arrays */ -	/* align unicode strings, must be word aligned */ -	if ((long) bcc_ptr % 2)	{ +	/* unicode strings, must be word aligned before the call */ +/*	if ((long) bcc_ptr % 2)	{  		*bcc_ptr = 0;  		bcc_ptr++; -	} +	} */  	/* copy user */  	if(ses->userName == NULL) {  		/* BB what about null user mounts - check that we do this BB */ @@ -416,9 +416,14 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time,  		bcc_ptr += CIFS_SESS_KEY_SIZE;  		memcpy(bcc_ptr, (char *)ntlm_session_key,CIFS_SESS_KEY_SIZE);  		bcc_ptr += CIFS_SESS_KEY_SIZE; -		if(ses->capabilities & CAP_UNICODE) +		if(ses->capabilities & CAP_UNICODE) { +			/* unicode strings must be word aligned */ +			if (iov[0].iov_len % 2) { +				*bcc_ptr = 0; +				bcc_ptr++;		 +			}	  			unicode_ssetup_strings(&bcc_ptr, ses, nls_cp); -		else +		} else  			ascii_ssetup_strings(&bcc_ptr, ses, nls_cp);  	} else if (type == NTLMv2) {  		char * v2_sess_key =  @@ -455,9 +460,12 @@ CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, int first_time,  		memcpy(bcc_ptr, (char *)v2_sess_key, sizeof(struct ntlmv2_resp));  		bcc_ptr += sizeof(struct ntlmv2_resp);  		kfree(v2_sess_key); -		if(ses->capabilities & CAP_UNICODE) +		if(ses->capabilities & CAP_UNICODE) { +			if(iov[0].iov_len % 2) { +				*bcc_ptr = 0; +			}	bcc_ptr++;  			unicode_ssetup_strings(&bcc_ptr, ses, nls_cp); -		else +		} else  			ascii_ssetup_strings(&bcc_ptr, ses, nls_cp);  	} else /* NTLMSSP or SPNEGO */ {  		pSMB->req.hdr.Flags2 |= SMBFLG2_EXT_SEC; |