commit e38e2c634b0e309e86cf6aff37698bae3927013e
parent d80109dd5e960ab007911b73a77161e3e8047798
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Sat, 6 Aug 2016 10:34:38 +0200
chars: don't persist when only one of the compared sequences is invalid
Persisting might lead to count 'n' reaching zero, which would mean that
the needle has matched, which is wrong when one of the strings contains
an invalid or incomplete multibyte sequence.
Diffstat:
1 file changed, 3 insertions(+), 0 deletions(-)
diff --git a/src/chars.c b/src/chars.c
@@ -530,6 +530,9 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n)
if (*s1 != *s2)
return (unsigned char)*s1 - (unsigned char)*s2;
+ if (bad1 != bad2)
+ return (bad1 ? 1 : -1);
+
s1++; s2++; n--;
continue;
}