ksmbd: Fix read on the uninitialized pointer sess
authorColin Ian King <colin.king@canonical.com>
Tue, 6 Jul 2021 12:05:01 +0000 (13:05 +0100)
committerNamjae Jeon <namjae.jeon@samsung.com>
Tue, 6 Jul 2021 13:06:32 +0000 (22:06 +0900)
There is a error handling case that passes control to label out_err
without pointer sess being assigned a value. The unassigned pointer
may be any garbage value and so the test of rc < 0 && sess maybe
true leading to sess being passed to the call to ksmbd_session_destroy.
Fix this by setting sess to NULL in this corner case.

Addresses-Coverity: ("Uninitialized pointer read")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/ksmbd/smb2pdu.c

index d4ef8f5..994b95b 100644 (file)
@@ -1615,6 +1615,7 @@ int smb2_sess_setup(struct ksmbd_work *work)
        } else if ((conn->dialect < SMB30_PROT_ID ||
                    server_conf.flags & KSMBD_GLOBAL_FLAG_SMB3_MULTICHANNEL) &&
                   (req->Flags & SMB2_SESSION_REQ_FLAG_BINDING)) {
+               sess = NULL;
                rc = -EACCES;
                goto out_err;
        } else {