From bde1d4b1bb725f2f1c48381e280796d43960164a Mon Sep 17 00:00:00 2001 From: fuyanX Date: Thu, 25 Jul 2019 23:24:33 +0800 Subject: [PATCH] acrn-hv: code review fix lib/string.c In lib/string.c, strncmp doesn't consider condition "n_arg=0", just add a process to "n_arg=0". Tracked-On: projectacrn/acrn-hypervisor#3466 Signed-off-by: YanX Fu Reviewed-by: Yonghua Huang Acked-by: Eddie Dong --- hypervisor/lib/string.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/hypervisor/lib/string.c b/hypervisor/lib/string.c index 52bf6479e..b0c8b8ce0 100644 --- a/hypervisor/lib/string.c +++ b/hypervisor/lib/string.c @@ -233,19 +233,26 @@ int32_t strcmp(const char *s1_arg, const char *s2_arg) return *str1 - *str2; } +/** + * @pre n_arg > 0 + */ int32_t strncmp(const char *s1_arg, const char *s2_arg, size_t n_arg) { const char *str1 = s1_arg; const char *str2 = s2_arg; size_t n = n_arg; + int32_t ret = 0; - while (((n - 1) != 0U) && ((*str1) != '\0') && ((*str2) != '\0') && ((*str1) == (*str2))) { - str1++; - str2++; - n--; + if (n > 0U) { + while (((n - 1) != 0U) && ((*str1) != '\0') && ((*str2) != '\0') && ((*str1) == (*str2))) { + str1++; + str2++; + n--; + } + ret = (int32_t) (*str1 - *str2); } - return *str1 - *str2; + return ret; } /*