Allow user names longer than 32 bytes
We artificially limited the user name to 32 bytes, but modern servers handle larger. Set the maximum length to a reasonable 256, and make the user name string dynamically allocated rather than a fixed size in session structure. Also clean up old checkpatch warning. Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
@@ -881,7 +881,8 @@ cifs_parse_mount_options(char *options, const char *devname,
|
||||
/* null user, ie anonymous, authentication */
|
||||
vol->nullauth = 1;
|
||||
}
|
||||
if (strnlen(value, 200) < 200) {
|
||||
if (strnlen(value, MAX_USERNAME_SIZE) <
|
||||
MAX_USERNAME_SIZE) {
|
||||
vol->username = value;
|
||||
} else {
|
||||
printk(KERN_WARNING "CIFS: username too long\n");
|
||||
@@ -1808,7 +1809,9 @@ cifs_find_smb_ses(struct TCP_Server_Info *server, struct smb_vol *vol)
|
||||
break;
|
||||
default:
|
||||
/* anything else takes username/password */
|
||||
if (strncmp(ses->userName, vol->username,
|
||||
if (ses->user_name == NULL)
|
||||
continue;
|
||||
if (strncmp(ses->user_name, vol->username,
|
||||
MAX_USERNAME_SIZE))
|
||||
continue;
|
||||
if (strlen(vol->username) != 0 &&
|
||||
@@ -1906,9 +1909,11 @@ cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb_vol *volume_info)
|
||||
else
|
||||
sprintf(ses->serverName, "%pI4", &addr->sin_addr);
|
||||
|
||||
if (volume_info->username)
|
||||
strncpy(ses->userName, volume_info->username,
|
||||
MAX_USERNAME_SIZE);
|
||||
if (volume_info->username) {
|
||||
ses->user_name = kstrdup(volume_info->username, GFP_KERNEL);
|
||||
if (!ses->user_name)
|
||||
goto get_ses_fail;
|
||||
}
|
||||
|
||||
/* volume_info->password freed at unmount */
|
||||
if (volume_info->password) {
|
||||
|
Reference in New Issue
Block a user