Re: [PATCH] cifs: remove coverity warning in calc_lanman_hash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



merged into cifs-2.6.git for-next

Let me know if any objections

On Tue, Dec 11, 2018 at 7:50 PM Ronnie Sahlberg <lsahlber@xxxxxxxxxx> wrote:
>
> password_with_pad is a fixed size buffer of 16 bytes, it contains a
> password string, to be padded with \0 if shorter than 16 bytes
> but is just truncated if longer.
> It is not, and we do not depend on it to be, nul terminated.
>
> As such, do not use strncpy() to populate this buffer since
> the str* prefix suggests that this is a string, which it is not,
> and it also confuses coverity causing a false warning.
>
> Signed-off-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
> ---
>  fs/cifs/cifsencrypt.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/fs/cifs/cifsencrypt.c b/fs/cifs/cifsencrypt.c
> index ecdff344e8fe..d2a05e46d6f5 100644
> --- a/fs/cifs/cifsencrypt.c
> +++ b/fs/cifs/cifsencrypt.c
> @@ -304,12 +304,17 @@ int setup_ntlm_response(struct cifs_ses *ses, const struct nls_table *nls_cp)
>  int calc_lanman_hash(const char *password, const char *cryptkey, bool encrypt,
>                         char *lnm_session_key)
>  {
> -       int i;
> +       int i, len;
>         int rc;
>         char password_with_pad[CIFS_ENCPWD_SIZE] = {0};
>
> -       if (password)
> -               strncpy(password_with_pad, password, CIFS_ENCPWD_SIZE);
> +       if (password) {
> +               for (len = 0; len < CIFS_ENCPWD_SIZE; len++)
> +                       if (!password[len])
> +                               break;
> +
> +               memcpy(password_with_pad, password, len);
> +       }
>
>         if (!encrypt && global_secflags & CIFSSEC_MAY_PLNTXT) {
>                 memcpy(lnm_session_key, password_with_pad,
> --
> 2.13.6
>


-- 
Thanks,

Steve



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux