public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] smb: client: Use snprintf in cifs_set_cifscreds
@ 2026-02-26 22:15 Thorsten Blum
  2026-02-26 23:26 ` Steve French
  2026-02-27 15:03 ` Paulo Alcantara
  0 siblings, 2 replies; 3+ messages in thread
From: Thorsten Blum @ 2026-02-26 22:15 UTC (permalink / raw)
  To: Steve French, Paulo Alcantara, Ronnie Sahlberg, Shyam Prasad N,
	Tom Talpey, Bharath SM
  Cc: Thorsten Blum, linux-cifs, samba-technical, linux-kernel

Replace unbounded sprintf() calls with the safer snprintf(). Avoid using
magic numbers and use strlen() to calculate the key descriptor buffer
size. Save the size in a local variable and reuse it for the bounded
snprintf() calls. Remove CIFSCREDS_DESC_SIZE.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
---
 fs/smb/client/connect.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index 33dfe116ca52..a055496c4835 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -2167,9 +2167,6 @@ void __cifs_put_smb_ses(struct cifs_ses *ses)
 
 #ifdef CONFIG_KEYS
 
-/* strlen("cifs:a:") + CIFS_MAX_DOMAINNAME_LEN + 1 */
-#define CIFSCREDS_DESC_SIZE (7 + CIFS_MAX_DOMAINNAME_LEN + 1)
-
 /* Populate username and pw fields from keyring if possible */
 static int
 cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
@@ -2177,6 +2174,7 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
 	int rc = 0;
 	int is_domain = 0;
 	const char *delim, *payload;
+	size_t desc_sz;
 	char *desc;
 	ssize_t len;
 	struct key *key;
@@ -2185,7 +2183,9 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
 	struct sockaddr_in6 *sa6;
 	const struct user_key_payload *upayload;
 
-	desc = kmalloc(CIFSCREDS_DESC_SIZE, GFP_KERNEL);
+	/* "cifs:a:" and "cifs:d:" are the same length; +1 for NUL terminator */
+	desc_sz = strlen("cifs:a:") + CIFS_MAX_DOMAINNAME_LEN + 1;
+	desc = kmalloc(desc_sz, GFP_KERNEL);
 	if (!desc)
 		return -ENOMEM;
 
@@ -2193,11 +2193,11 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
 	switch (server->dstaddr.ss_family) {
 	case AF_INET:
 		sa = (struct sockaddr_in *)&server->dstaddr;
-		sprintf(desc, "cifs:a:%pI4", &sa->sin_addr.s_addr);
+		snprintf(desc, desc_sz, "cifs:a:%pI4", &sa->sin_addr.s_addr);
 		break;
 	case AF_INET6:
 		sa6 = (struct sockaddr_in6 *)&server->dstaddr;
-		sprintf(desc, "cifs:a:%pI6c", &sa6->sin6_addr.s6_addr);
+		snprintf(desc, desc_sz, "cifs:a:%pI6c", &sa6->sin6_addr.s6_addr);
 		break;
 	default:
 		cifs_dbg(FYI, "Bad ss_family (%hu)\n",
@@ -2216,7 +2216,7 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
 		}
 
 		/* didn't work, try to find a domain key */
-		sprintf(desc, "cifs:d:%s", ses->domainName);
+		snprintf(desc, desc_sz, "cifs:d:%s", ses->domainName);
 		cifs_dbg(FYI, "%s: desc=%s\n", __func__, desc);
 		key = request_key(&key_type_logon, desc, "");
 		if (IS_ERR(key)) {
-- 
Thorsten Blum <thorsten.blum@linux.dev>
GPG: 1D60 735E 8AEF 3BE4 73B6  9D84 7336 78FD 8DFE EAD4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] smb: client: Use snprintf in cifs_set_cifscreds
  2026-02-26 22:15 [PATCH] smb: client: Use snprintf in cifs_set_cifscreds Thorsten Blum
@ 2026-02-26 23:26 ` Steve French
  2026-02-27 15:03 ` Paulo Alcantara
  1 sibling, 0 replies; 3+ messages in thread
From: Steve French @ 2026-02-26 23:26 UTC (permalink / raw)
  To: Thorsten Blum
  Cc: Steve French, Paulo Alcantara, Ronnie Sahlberg, Shyam Prasad N,
	Tom Talpey, Bharath SM, linux-cifs, samba-technical, linux-kernel

merged into cifs-2.6.git for-next pending additional review and testing

On Thu, Feb 26, 2026 at 4:16 PM Thorsten Blum <thorsten.blum@linux.dev> wrote:
>
> Replace unbounded sprintf() calls with the safer snprintf(). Avoid using
> magic numbers and use strlen() to calculate the key descriptor buffer
> size. Save the size in a local variable and reuse it for the bounded
> snprintf() calls. Remove CIFSCREDS_DESC_SIZE.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
>  fs/smb/client/connect.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
> index 33dfe116ca52..a055496c4835 100644
> --- a/fs/smb/client/connect.c
> +++ b/fs/smb/client/connect.c
> @@ -2167,9 +2167,6 @@ void __cifs_put_smb_ses(struct cifs_ses *ses)
>
>  #ifdef CONFIG_KEYS
>
> -/* strlen("cifs:a:") + CIFS_MAX_DOMAINNAME_LEN + 1 */
> -#define CIFSCREDS_DESC_SIZE (7 + CIFS_MAX_DOMAINNAME_LEN + 1)
> -
>  /* Populate username and pw fields from keyring if possible */
>  static int
>  cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
> @@ -2177,6 +2174,7 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
>         int rc = 0;
>         int is_domain = 0;
>         const char *delim, *payload;
> +       size_t desc_sz;
>         char *desc;
>         ssize_t len;
>         struct key *key;
> @@ -2185,7 +2183,9 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
>         struct sockaddr_in6 *sa6;
>         const struct user_key_payload *upayload;
>
> -       desc = kmalloc(CIFSCREDS_DESC_SIZE, GFP_KERNEL);
> +       /* "cifs:a:" and "cifs:d:" are the same length; +1 for NUL terminator */
> +       desc_sz = strlen("cifs:a:") + CIFS_MAX_DOMAINNAME_LEN + 1;
> +       desc = kmalloc(desc_sz, GFP_KERNEL);
>         if (!desc)
>                 return -ENOMEM;
>
> @@ -2193,11 +2193,11 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
>         switch (server->dstaddr.ss_family) {
>         case AF_INET:
>                 sa = (struct sockaddr_in *)&server->dstaddr;
> -               sprintf(desc, "cifs:a:%pI4", &sa->sin_addr.s_addr);
> +               snprintf(desc, desc_sz, "cifs:a:%pI4", &sa->sin_addr.s_addr);
>                 break;
>         case AF_INET6:
>                 sa6 = (struct sockaddr_in6 *)&server->dstaddr;
> -               sprintf(desc, "cifs:a:%pI6c", &sa6->sin6_addr.s6_addr);
> +               snprintf(desc, desc_sz, "cifs:a:%pI6c", &sa6->sin6_addr.s6_addr);
>                 break;
>         default:
>                 cifs_dbg(FYI, "Bad ss_family (%hu)\n",
> @@ -2216,7 +2216,7 @@ cifs_set_cifscreds(struct smb3_fs_context *ctx, struct cifs_ses *ses)
>                 }
>
>                 /* didn't work, try to find a domain key */
> -               sprintf(desc, "cifs:d:%s", ses->domainName);
> +               snprintf(desc, desc_sz, "cifs:d:%s", ses->domainName);
>                 cifs_dbg(FYI, "%s: desc=%s\n", __func__, desc);
>                 key = request_key(&key_type_logon, desc, "");
>                 if (IS_ERR(key)) {
> --
> Thorsten Blum <thorsten.blum@linux.dev>
> GPG: 1D60 735E 8AEF 3BE4 73B6  9D84 7336 78FD 8DFE EAD4
>
>


-- 
Thanks,

Steve

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] smb: client: Use snprintf in cifs_set_cifscreds
  2026-02-26 22:15 [PATCH] smb: client: Use snprintf in cifs_set_cifscreds Thorsten Blum
  2026-02-26 23:26 ` Steve French
@ 2026-02-27 15:03 ` Paulo Alcantara
  1 sibling, 0 replies; 3+ messages in thread
From: Paulo Alcantara @ 2026-02-27 15:03 UTC (permalink / raw)
  To: Thorsten Blum, Steve French, Ronnie Sahlberg, Shyam Prasad N,
	Tom Talpey, Bharath SM
  Cc: Thorsten Blum, linux-cifs, samba-technical, linux-kernel

Thorsten Blum <thorsten.blum@linux.dev> writes:

> Replace unbounded sprintf() calls with the safer snprintf(). Avoid using
> magic numbers and use strlen() to calculate the key descriptor buffer
> size. Save the size in a local variable and reuse it for the bounded
> snprintf() calls. Remove CIFSCREDS_DESC_SIZE.
>
> Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
> ---
>  fs/smb/client/connect.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)

Acked-by: Paulo Alcantara (Red Hat) <pc@manguebit.org>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-02-27 15:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-26 22:15 [PATCH] smb: client: Use snprintf in cifs_set_cifscreds Thorsten Blum
2026-02-26 23:26 ` Steve French
2026-02-27 15:03 ` Paulo Alcantara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox