lib: sbi: Fix bug in strncmp function
PATCH 1/1 lib: sbi: Fix bug in strncmp function
From: Dong Du <[email protected]>
strncmp should return 0 when the count is 0.
Fix the issue in sbi_strncmp.
--- lib/sbi/sbi_string.c | 3 +++ 1 file changed, 3 insertions(+)
lib/sbi/sbi_string.c +3 -0
@@ -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--) ;
Signature · 1 line
2.31.1
PATCH 1/1 lib: sbi: Fix bug in strncmp function
Quoted 15 lines · Dong Du
From: Dong Du <[email protected]>
strncmp should return 0 when the count is 0.
Fix the issue insbi_strncmp.Signed-off-by Dong Du <[email protected]>--- lib/sbi/sbi_string.c | 3 +++ 1 file changed, 3 insertions(+)lib/sbi/sbi_string.c +0
-0
lib/sbi/sbi_string.c int sbi_strcmp(const char *a, const char *b) · line 37
Quoted 9 lines
lib/sbi/sbi_string.c +3
-0@@ -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.
Signature · 3 lines
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."
PATCH 1/1 lib: sbi: Fix bug in strncmp function
Hi Andreas,
You are right.
The updated patch has been sent.
Regards,
Dong
----- Original Message -----
From: "Andreas Schwab" <[email protected]>
To: "Dong Du" <[email protected]>
Cc: "anup patel" <[email protected]>, opensbi at lists.infradead.org, "Dd nirvana" <[email protected]>
Sent: Wednesday, July 28, 2021 12:15:09 AM
Subject: Re: [PATCH] lib: sbi: Fix bug in strncmp function
Quoted 15 lines · Dong Du
From: Dong Du <[email protected]>
strncmp should return 0 when the count is 0.
Fix the issue insbi_strncmp.Signed-off-by Dong Du <[email protected]>--- lib/sbi/sbi_string.c | 3 +++ 1 file changed, 3 insertions(+)lib/sbi/sbi_string.c +0
-0
lib/sbi/sbi_string.c int sbi_strcmp(const char *a, const char *b) · line 37
Quoted 9 lines
lib/sbi/sbi_string.c +3
-0@@ -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.
Signature · 3 lines
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."