[PATCH] lib: sbi: Fix bug in strncmp function

杜东 dd_nirvana at sjtu.edu.cn
Wed Jul 28 09:16:05 PDT 2021


Hi Andreas,
   You are right.
   The updated patch has been sent.

Regards,
Dong

----- Original Message -----
From: "Andreas Schwab" <schwab at linux-m68k.org>
To: "Dong Du" <ddnirvana1 at gmail.com>
Cc: "anup patel" <anup.patel at wdc.com>, opensbi at lists.infradead.org, "Dd nirvana" <dd_nirvana at sjtu.edu.cn>
Sent: Wednesday, July 28, 2021 12:15:09 AM
Subject: Re: [PATCH] lib: sbi: Fix bug in strncmp function

On Jul 27 2021, Dong Du wrote:

> From: Dong Du <dd_nirvana at sjtu.edu.cn>
>
> strncmp should return 0 when the count is 0.
> Fix the issue in sbi_strncmp.
>
> Signed-off-by: Dong Du <ddnirvana1 at gmail.com>
> ---
>  lib/sbi/sbi_string.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/lib/sbi/sbi_string.c b/lib/sbi/sbi_string.c
> index 7805ba4..f93ed5f 100644
> --- a/lib/sbi/sbi_string.c
> +++ b/lib/sbi/sbi_string.c
> @@ -29,6 +29,9 @@ int sbi_strcmp(const char *a, const char *b)
>  
>  int sbi_strncmp(const char *a, const char *b, size_t count)
>  {
> +	if (!count)
> +		return 0;
> +
>  	/* search first diff or end of string */
>  	for (; count > 0 && *a == *b && *a != '\0'; a++, b++, count--)
>  		;

You need to put the test after the loop.  Once count becomes zero, there
are no more characters to compare.

Andreas.

-- 
Andreas Schwab, schwab at linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."



More information about the opensbi mailing list