mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-19 12:00:00 +00:00
cifs: fix workstation_name for multiuser mounts
Set workstation_name from the master_tcon for multiuser mounts. Just in case, protect size_of_ntlmssp_blob against a NULL workstation_name. Fixes: 49bd49f983b5 ("cifs: send workstation name during ntlmssp session setup") Cc: stable@vger.kernel.org # 5.16 Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz> Signed-off-by: Ryan Bair <ryandbair@gmail.com> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
40c845c176
commit
d3b331fb51
@ -1977,6 +1977,19 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
|
||||
}
|
||||
}
|
||||
|
||||
ctx->workstation_name = kstrdup(ses->workstation_name, GFP_KERNEL);
|
||||
if (!ctx->workstation_name) {
|
||||
cifs_dbg(FYI, "Unable to allocate memory for workstation_name\n");
|
||||
rc = -ENOMEM;
|
||||
kfree(ctx->username);
|
||||
ctx->username = NULL;
|
||||
kfree_sensitive(ctx->password);
|
||||
ctx->password = NULL;
|
||||
kfree(ctx->domainname);
|
||||
ctx->domainname = NULL;
|
||||
goto out_key_put;
|
||||
}
|
||||
|
||||
out_key_put:
|
||||
up_read(&key->sem);
|
||||
key_put(key);
|
||||
|
@ -713,7 +713,11 @@ static int size_of_ntlmssp_blob(struct cifs_ses *ses, int base_size)
|
||||
else
|
||||
sz += sizeof(__le16);
|
||||
|
||||
sz += sizeof(__le16) * strnlen(ses->workstation_name, CIFS_MAX_WORKSTATION_LEN);
|
||||
if (ses->workstation_name)
|
||||
sz += sizeof(__le16) * strnlen(ses->workstation_name,
|
||||
CIFS_MAX_WORKSTATION_LEN);
|
||||
else
|
||||
sz += sizeof(__le16);
|
||||
|
||||
return sz;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user