]> www.infradead.org Git - linux.git/commitdiff
smb: client: Handle kstrdup failures for passwords
authorHenrique Carvalho <henrique.carvalho@suse.com>
Tue, 22 Oct 2024 18:21:26 +0000 (15:21 -0300)
committerSteve French <stfrench@microsoft.com>
Wed, 23 Oct 2024 12:42:22 +0000 (07:42 -0500)
In smb3_reconfigure(), after duplicating ctx->password and
ctx->password2 with kstrdup(), we need to check for allocation
failures.

If ses->password allocation fails, return -ENOMEM.
If ses->password2 allocation fails, free ses->password, set it
to NULL, and return -ENOMEM.

Fixes: c1eb537bf456 ("cifs: allow changing password during remount")
Reviewed-by: David Howells <dhowells@redhat.com
Signed-off-by: Haoxiang Li <make24@iscas.ac.cn>
Signed-off-by: Henrique Carvalho <henrique.carvalho@suse.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/fs_context.c

index 28c4e576d460aa2b91eccfab9fb9386a21f187ff..5c5a52019efada1c09997be00d8fe32d6364eb12 100644 (file)
@@ -920,8 +920,15 @@ static int smb3_reconfigure(struct fs_context *fc)
        else  {
                kfree_sensitive(ses->password);
                ses->password = kstrdup(ctx->password, GFP_KERNEL);
+               if (!ses->password)
+                       return -ENOMEM;
                kfree_sensitive(ses->password2);
                ses->password2 = kstrdup(ctx->password2, GFP_KERNEL);
+               if (!ses->password2) {
+                       kfree_sensitive(ses->password);
+                       ses->password = NULL;
+                       return -ENOMEM;
+               }
        }
        STEAL_STRING(cifs_sb, ctx, domainname);
        STEAL_STRING(cifs_sb, ctx, nodename);