diff --git a/libs/libc/string/lib_strcmp.c b/libs/libc/string/lib_strcmp.c index 2ac4f62619a..edb6d23c834 100644 --- a/libs/libc/string/lib_strcmp.c +++ b/libs/libc/string/lib_strcmp.c @@ -34,11 +34,14 @@ #undef strcmp /* See mm/README.txt */ int strcmp(FAR const char *cs, FAR const char *ct) { - register signed char result; + register int result; for (; ; ) { - if ((result = *cs - *ct++) != 0 || !*cs++) - break; + if ((result = (unsigned char)*cs - (unsigned char)*ct++) != 0 || + !*cs++) + { + break; + } } return result; diff --git a/libs/libc/string/lib_strncmp.c b/libs/libc/string/lib_strncmp.c index 117f1fddf88..48e2a2486aa 100644 --- a/libs/libc/string/lib_strncmp.c +++ b/libs/libc/string/lib_strncmp.c @@ -37,7 +37,8 @@ int strncmp(const char *cs, const char *ct, size_t nb) int result = 0; for (; nb > 0; nb--) { - if ((result = (int)*cs - (int)*ct++) != 0 || !*cs++) + if ((result = (unsigned char)*cs - (unsigned char)*ct++) != 0 || + !*cs++) { break; }