Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

smb: client: parse DNS domain name from domain= option

If the user specified a DNS domain name in domain= mount option, then
use it instead of parsing it in NTLMSSP CHALLENGE_MESSAGE message.

Signed-off-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>

authored by

Paulo Alcantara and committed by
Steve French
489d1523 ad46faff

+14 -5
+14 -5
fs/smb/client/connect.c
··· 2279 2279 struct cifs_ses * 2280 2280 cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx) 2281 2281 { 2282 - int rc = 0; 2283 - int retries = 0; 2284 - unsigned int xid; 2285 - struct cifs_ses *ses; 2286 - struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; 2287 2282 struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr; 2283 + struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr; 2284 + struct cifs_ses *ses; 2285 + unsigned int xid; 2286 + int retries = 0; 2287 + size_t len; 2288 + int rc = 0; 2288 2289 2289 2290 xid = get_xid(); 2290 2291 ··· 2375 2374 ses->domainName = kstrdup(ctx->domainname, GFP_KERNEL); 2376 2375 if (!ses->domainName) 2377 2376 goto get_ses_fail; 2377 + 2378 + len = strnlen(ctx->domainname, CIFS_MAX_DOMAINNAME_LEN); 2379 + if (!cifs_netbios_name(ctx->domainname, len)) { 2380 + ses->dns_dom = kstrndup(ctx->domainname, 2381 + len, GFP_KERNEL); 2382 + if (!ses->dns_dom) 2383 + goto get_ses_fail; 2384 + } 2378 2385 } 2379 2386 2380 2387 strscpy(ses->workstation_name, ctx->workstation_name, sizeof(ses->workstation_name));