diff mbox series

[4/4] smb: client: parse DNS domain name from domain= option

Message ID 20250103222534.86744-4-pc@manguebit.com (mailing list archive)
State New, archived
Headers show
Series [1/4] smb: client: introduce av_for_each_entry() helper | expand

Commit Message

Paulo Alcantara Jan. 3, 2025, 10:25 p.m. UTC
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>
---
 fs/smb/client/connect.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

Comments

Paulo Alcantara Jan. 3, 2025, 10:32 p.m. UTC | #1
Paulo Alcantara <pc@manguebit.com> writes:

> 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>
> ---
>  fs/smb/client/connect.c | 19 ++++++++++++++-----
>  1 file changed, 14 insertions(+), 5 deletions(-)

Please ignore this patch.  Resent the series [1].

[1] https://lore.kernel.org/r/20250103222858.87176-1-pc@manguebit.com
diff mbox series

Patch

diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index d4b571d74191..35d0243ae177 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -2280,12 +2280,13 @@  cifs_set_cifscreds(struct smb3_fs_context *ctx __attribute__((unused)),
 struct cifs_ses *
 cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx)
 {
-	int rc = 0;
+	struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr;
+	struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr;
+	struct cifs_ses *ses;
+	unsigned int xid;
 	int retries = 0;
-	unsigned int xid;
-	struct cifs_ses *ses;
-	struct sockaddr_in *addr = (struct sockaddr_in *)&server->dstaddr;
-	struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&server->dstaddr;
+	size_t len;
+	int rc = 0;
 
 	xid = get_xid();
 
@@ -2375,6 +2376,14 @@  cifs_get_smb_ses(struct TCP_Server_Info *server, struct smb3_fs_context *ctx)
 		ses->domainName = kstrdup(ctx->domainname, GFP_KERNEL);
 		if (!ses->domainName)
 			goto get_ses_fail;
+
+		len = strnlen(ctx->domainname, CIFS_MAX_DOMAINNAME_LEN);
+		if (!cifs_netbios_name(ctx->domainname, len)) {
+			ses->dns_dom = kstrndup(ctx->domainname,
+						len, GFP_KERNEL);
+			if (!ses->dns_dom)
+				goto get_ses_fail;
+		}
 	}
 
 	strscpy(ses->workstation_name, ctx->workstation_name, sizeof(ses->workstation_name));