aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorScott Lovenberg <scott.lovenberg@gmail.com>2013-08-09 08:47:17 -0400
committerSteve French <smfrench@gmail.com>2013-09-08 15:34:11 -0400
commit8c3a2b4c420c5b988005b8697b7404ced076aaaa (patch)
treea680e656fb9bd7632c77ccbef89d24ce805c9ef5 /fs/cifs
parentd244bf2dfbebfded05f494ffd53659fa7b1e32c1 (diff)
cifs: Move string length definitions to uapi
The max string length definitions for user name, domain name, password, and share name have been moved into their own header file in uapi so the mount helper can use autoconf to define them instead of keeping the kernel side and userland side definitions in sync manually. The names have also been standardized with a "CIFS" prefix and "LEN" suffix. Signed-off-by: Scott Lovenberg <scott.lovenberg@gmail.com> Reviewed-by: Chen Gang <gang.chen@asianux.com> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/cifsglob.h7
-rw-r--r--fs/cifs/connect.c12
-rw-r--r--fs/cifs/sess.c10
3 files changed, 13 insertions, 16 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index ec6c3fbb29eb..633bbc5e8801 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -28,6 +28,7 @@
28#include "cifsacl.h" 28#include "cifsacl.h"
29#include <crypto/internal/hash.h> 29#include <crypto/internal/hash.h>
30#include <linux/scatterlist.h> 30#include <linux/scatterlist.h>
31#include <uapi/linux/cifs/cifs_mount.h>
31#ifdef CONFIG_CIFS_SMB2 32#ifdef CONFIG_CIFS_SMB2
32#include "smb2pdu.h" 33#include "smb2pdu.h"
33#endif 34#endif
@@ -41,12 +42,8 @@
41#define MAX_SES_INFO 2 42#define MAX_SES_INFO 2
42#define MAX_TCON_INFO 4 43#define MAX_TCON_INFO 4
43 44
44#define MAX_TREE_SIZE (2 + MAX_SERVER_SIZE + 1 + MAX_SHARE_SIZE + 1) 45#define MAX_TREE_SIZE (2 + MAX_SERVER_SIZE + 1 + CIFS_MAX_SHARE_LEN + 1)
45#define MAX_SERVER_SIZE 15 46#define MAX_SERVER_SIZE 15
46#define MAX_SHARE_SIZE 80
47#define CIFS_MAX_DOMAINNAME_LEN 256 /* max domain name length */
48#define MAX_USERNAME_SIZE 256 /* reasonable maximum for current servers */
49#define MAX_PASSWORD_SIZE 512 /* max for windows seems to be 256 wide chars */
50 47
51#define CIFS_MIN_RCV_POOL 4 48#define CIFS_MIN_RCV_POOL 4
52 49
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 37950c65453c..b1bab99be83b 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1577,8 +1577,8 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
1577 if (string == NULL) 1577 if (string == NULL)
1578 goto out_nomem; 1578 goto out_nomem;
1579 1579
1580 if (strnlen(string, MAX_USERNAME_SIZE) > 1580 if (strnlen(string, CIFS_MAX_USERNAME_LEN) >
1581 MAX_USERNAME_SIZE) { 1581 CIFS_MAX_USERNAME_LEN) {
1582 printk(KERN_WARNING "CIFS: username too long\n"); 1582 printk(KERN_WARNING "CIFS: username too long\n");
1583 goto cifs_parse_mount_err; 1583 goto cifs_parse_mount_err;
1584 } 1584 }
@@ -2223,13 +2223,13 @@ static int match_session(struct cifs_ses *ses, struct smb_vol *vol)
2223 /* anything else takes username/password */ 2223 /* anything else takes username/password */
2224 if (strncmp(ses->user_name, 2224 if (strncmp(ses->user_name,
2225 vol->username ? vol->username : "", 2225 vol->username ? vol->username : "",
2226 MAX_USERNAME_SIZE)) 2226 CIFS_MAX_USERNAME_LEN))
2227 return 0; 2227 return 0;
2228 if (strlen(vol->username) != 0 && 2228 if (strlen(vol->username) != 0 &&
2229 ses->password != NULL && 2229 ses->password != NULL &&
2230 strncmp(ses->password, 2230 strncmp(ses->password,
2231 vol->password ? vol->password : "", 2231 vol->password ? vol->password : "",
2232 MAX_PASSWORD_SIZE)) 2232 CIFS_MAX_PASSWORD_LEN))
2233 return 0; 2233 return 0;
2234 } 2234 }
2235 return 1; 2235 return 1;
@@ -2354,7 +2354,7 @@ cifs_set_cifscreds(struct smb_vol *vol, struct cifs_ses *ses)
2354 } 2354 }
2355 2355
2356 len = delim - payload; 2356 len = delim - payload;
2357 if (len > MAX_USERNAME_SIZE || len <= 0) { 2357 if (len > CIFS_MAX_USERNAME_LEN || len <= 0) {
2358 cifs_dbg(FYI, "Bad value from username search (len=%zd)\n", 2358 cifs_dbg(FYI, "Bad value from username search (len=%zd)\n",
2359 len); 2359 len);
2360 rc = -EINVAL; 2360 rc = -EINVAL;
@@ -2371,7 +2371,7 @@ cifs_set_cifscreds(struct smb_vol *vol, struct cifs_ses *ses)
2371 cifs_dbg(FYI, "%s: username=%s\n", __func__, vol->username); 2371 cifs_dbg(FYI, "%s: username=%s\n", __func__, vol->username);
2372 2372
2373 len = key->datalen - (len + 1); 2373 len = key->datalen - (len + 1);
2374 if (len > MAX_PASSWORD_SIZE || len <= 0) { 2374 if (len > CIFS_MAX_PASSWORD_LEN || len <= 0) {
2375 cifs_dbg(FYI, "Bad len for password search (len=%zd)\n", len); 2375 cifs_dbg(FYI, "Bad len for password search (len=%zd)\n", len);
2376 rc = -EINVAL; 2376 rc = -EINVAL;
2377 kfree(vol->username); 2377 kfree(vol->username);
diff --git a/fs/cifs/sess.c b/fs/cifs/sess.c
index 08dd37bb23aa..a0a62db0f575 100644
--- a/fs/cifs/sess.c
+++ b/fs/cifs/sess.c
@@ -226,7 +226,7 @@ static void unicode_ssetup_strings(char **pbcc_area, struct cifs_ses *ses,
226 *(bcc_ptr+1) = 0; 226 *(bcc_ptr+1) = 0;
227 } else { 227 } else {
228 bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->user_name, 228 bytes_ret = cifs_strtoUTF16((__le16 *) bcc_ptr, ses->user_name,
229 MAX_USERNAME_SIZE, nls_cp); 229 CIFS_MAX_USERNAME_LEN, nls_cp);
230 } 230 }
231 bcc_ptr += 2 * bytes_ret; 231 bcc_ptr += 2 * bytes_ret;
232 bcc_ptr += 2; /* account for null termination */ 232 bcc_ptr += 2; /* account for null termination */
@@ -246,8 +246,8 @@ static void ascii_ssetup_strings(char **pbcc_area, struct cifs_ses *ses,
246 /* BB what about null user mounts - check that we do this BB */ 246 /* BB what about null user mounts - check that we do this BB */
247 /* copy user */ 247 /* copy user */
248 if (ses->user_name != NULL) { 248 if (ses->user_name != NULL) {
249 strncpy(bcc_ptr, ses->user_name, MAX_USERNAME_SIZE); 249 strncpy(bcc_ptr, ses->user_name, CIFS_MAX_USERNAME_LEN);
250 bcc_ptr += strnlen(ses->user_name, MAX_USERNAME_SIZE); 250 bcc_ptr += strnlen(ses->user_name, CIFS_MAX_USERNAME_LEN);
251 } 251 }
252 /* else null user mount */ 252 /* else null user mount */
253 *bcc_ptr = 0; 253 *bcc_ptr = 0;
@@ -501,7 +501,7 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer,
501 } else { 501 } else {
502 int len; 502 int len;
503 len = cifs_strtoUTF16((__le16 *)tmp, ses->domainName, 503 len = cifs_strtoUTF16((__le16 *)tmp, ses->domainName,
504 MAX_USERNAME_SIZE, nls_cp); 504 CIFS_MAX_USERNAME_LEN, nls_cp);
505 len *= 2; /* unicode is 2 bytes each */ 505 len *= 2; /* unicode is 2 bytes each */
506 sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - pbuffer); 506 sec_blob->DomainName.BufferOffset = cpu_to_le32(tmp - pbuffer);
507 sec_blob->DomainName.Length = cpu_to_le16(len); 507 sec_blob->DomainName.Length = cpu_to_le16(len);
@@ -517,7 +517,7 @@ int build_ntlmssp_auth_blob(unsigned char *pbuffer,
517 } else { 517 } else {
518 int len; 518 int len;
519 len = cifs_strtoUTF16((__le16 *)tmp, ses->user_name, 519 len = cifs_strtoUTF16((__le16 *)tmp, ses->user_name,
520 MAX_USERNAME_SIZE, nls_cp); 520 CIFS_MAX_USERNAME_LEN, nls_cp);
521 len *= 2; /* unicode is 2 bytes each */ 521 len *= 2; /* unicode is 2 bytes each */
522 sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - pbuffer); 522 sec_blob->UserName.BufferOffset = cpu_to_le32(tmp - pbuffer);
523 sec_blob->UserName.Length = cpu_to_le16(len); 523 sec_blob->UserName.Length = cpu_to_le16(len);