public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <simon.horman@corigine.com>
To: Denis Plotnikov <den-plotnikov@yandex-team.ru>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	rajur@chelsio.com, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com
Subject: Re: [PATCH] cxgb4: do conversion after string check
Date: Thu, 30 Mar 2023 21:52:13 +0200	[thread overview]
Message-ID: <ZCXobRYAPfNkSOK5@corigine.com> (raw)
In-Reply-To: <20230330154703.36958-1-den-plotnikov@yandex-team.ru>

On Thu, Mar 30, 2023 at 06:47:03PM +0300, Denis Plotnikov wrote:
> Static code analyzer complains to uncheck return value.
> Indeed, the return value of kstrtouint "must be checked"
> as the comment says.
> Moreover, it looks like the string conversion  should be
> after "end of string" or "new line" check.
> This patch fixes these issues.
> 
> Signed-off-by: Denis Plotnikov <den-plotnikov@yandex-team.ru>
> ---
>  drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> index 14e0d989c3ba5..a8d3616630cc6 100644
> --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_debugfs.c
> @@ -1576,9 +1576,11 @@ inval:				count = -EINVAL;
>  		}
>  		if (*word == '@') {
>  			end = (char *)word + 1;
> -			ret = kstrtouint(end, 10, &j);
>  			if (*end && *end != '\n')
>  				goto inval;

I feel that I must be missing something very obvious.

My reading is that the code only gets to this line
if *end is either '\0' or '\n'. Which would not be the case
if end points to the string representation of number.
So I am confused about this code, both with and without your patch.

Perhaps the check is assuming that end is pointing
to the end of the string representation of the number.
Something like the endptr after a call to libc's strtoul(3).
But by my reading it is pointing to the beginning.

> +			ret = kstrtouint(end, 10, &j);
> +			if (ret)
> +				goto inval;
>  			if (j & 7)          /* doesn't start at multiple of 8 */
>  				goto inval;
>  			j /= 8;
> -- 
> 2.25.1
> 

      reply	other threads:[~2023-03-30 19:52 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-30 15:47 [PATCH] cxgb4: do conversion after string check Denis Plotnikov
2023-03-30 19:52 ` Simon Horman [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZCXobRYAPfNkSOK5@corigine.com \
    --to=simon.horman@corigine.com \
    --cc=davem@davemloft.net \
    --cc=den-plotnikov@yandex-team.ru \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rajur@chelsio.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox