cifsd: fix Control flow issues in ksmbd_build_ntlmssp_challenge_blob()
authorNamjae Jeon <namjae.jeon@samsung.com>
Fri, 28 May 2021 22:59:40 +0000 (07:59 +0900)
committerNamjae Jeon <namjae.jeon@samsung.com>
Fri, 28 May 2021 23:00:39 +0000 (08:00 +0900)
Fix a defect reported by Coverity Scan.

*** CID 1504970:  Control flow issues  (NO_EFFECT)
/fs/cifsd/auth.c: 622 in ksmbd_build_ntlmssp_challenge_blob()
616             name = kmalloc(2 + UNICODE_LEN(len), GFP_KERNEL);
617             if (!name)
618                     return -ENOMEM;
619
620             conv_len = smb_strtoUTF16((__le16 *)name,
ksmbd_netbios_name(), len,
621                                       sess->conn->local_nls);
>>>     CID 1504970:  Control flow issues  (NO_EFFECT)
>>>     This less-than-zero comparison of an unsigned value is never true.
622             if (conv_len < 0 || conv_len > len) {
623                     kfree(name);
624                     return -EINVAL;
625             }
626
627             uni_len = UNICODE_LEN(conv_len);

Reported-by: Coverity Scan <scan-admin@coverity.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifsd/auth.c

index 9b86cf4..5f47de4 100644 (file)
@@ -584,8 +584,8 @@ ksmbd_build_ntlmssp_challenge_blob(struct challenge_message *chgblob,
        struct target_info *tinfo;
        wchar_t *name;
        __u8 *target_name;
-       unsigned int len, flags, blob_off, blob_len, type, target_info_len = 0;
-       unsigned int uni_len, conv_len;
+       unsigned int flags, blob_off, blob_len, type, target_info_len = 0;
+       int len, uni_len, conv_len;
        int cflags = sess->ntlmssp.client_flags;
 
        memcpy(chgblob->Signature, NTLMSSP_SIGNATURE, 8);