diff options
author | Steve French <sfrench@us.ibm.com> | 2006-05-30 14:04:19 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-05-30 14:04:19 -0400 |
commit | a878fb2218c87fe66f2bcf3914840e24c41338f7 (patch) | |
tree | 61d958f40abe8db8ef8cc2a34dcae4c7aea8fc64 /fs/cifs | |
parent | fc94cdb94462e71a4a974bc9bc1f483189ae7805 (diff) |
[CIFS] Do not limit the length of share names (was 100 for whole UNC name)
during mount. Especially important for some non-Western languages.
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r-- | fs/cifs/CHANGES | 4 | ||||
-rw-r--r-- | fs/cifs/connect.c | 9 |
2 files changed, 9 insertions, 4 deletions
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES index dfd364c6631..7271bb0257f 100644 --- a/fs/cifs/CHANGES +++ b/fs/cifs/CHANGES | |||
@@ -1,7 +1,9 @@ | |||
1 | Version 1.43 | 1 | Version 1.43 |
2 | ------------ | 2 | ------------ |
3 | POSIX locking to servers which support CIFS POSIX Extensions | 3 | POSIX locking to servers which support CIFS POSIX Extensions |
4 | (disabled by default controlled by proc/fs/cifs/Experimental) | 4 | (disabled by default controlled by proc/fs/cifs/Experimental). |
5 | Handle conversion of long share names (especially Asian languages) | ||
6 | to Unicode during mount. | ||
5 | 7 | ||
6 | Version 1.42 | 8 | Version 1.42 |
7 | ------------ | 9 | ------------ |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index d2ec806a4f3..105544b0a27 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -3282,7 +3282,8 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses, | |||
3282 | bcc_ptr++; /* align */ | 3282 | bcc_ptr++; /* align */ |
3283 | } | 3283 | } |
3284 | 3284 | ||
3285 | if(ses->server->secMode & (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED)) | 3285 | if(ses->server->secMode & |
3286 | (SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED)) | ||
3286 | smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; | 3287 | smb_buffer->Flags2 |= SMBFLG2_SECURITY_SIGNATURE; |
3287 | 3288 | ||
3288 | if (ses->capabilities & CAP_STATUS32) { | 3289 | if (ses->capabilities & CAP_STATUS32) { |
@@ -3294,8 +3295,10 @@ CIFSTCon(unsigned int xid, struct cifsSesInfo *ses, | |||
3294 | if (ses->capabilities & CAP_UNICODE) { | 3295 | if (ses->capabilities & CAP_UNICODE) { |
3295 | smb_buffer->Flags2 |= SMBFLG2_UNICODE; | 3296 | smb_buffer->Flags2 |= SMBFLG2_UNICODE; |
3296 | length = | 3297 | length = |
3297 | cifs_strtoUCS((__le16 *) bcc_ptr, tree, 100, nls_codepage); | 3298 | cifs_strtoUCS((__le16 *) bcc_ptr, tree, |
3298 | bcc_ptr += 2 * length; /* convert num of 16 bit words to bytes */ | 3299 | 6 /* max utf8 char length in bytes */ * |
3300 | (/* server len*/ + 256 /* share len */), nls_codepage); | ||
3301 | bcc_ptr += 2 * length; /* convert num 16 bit words to bytes */ | ||
3299 | bcc_ptr += 2; /* skip trailing null */ | 3302 | bcc_ptr += 2; /* skip trailing null */ |
3300 | } else { /* ASCII */ | 3303 | } else { /* ASCII */ |
3301 | strcpy(bcc_ptr, tree); | 3304 | strcpy(bcc_ptr, tree); |