diff --git a/libafl_qemu/libqasan/string.c b/libafl_qemu/libqasan/string.c index 334f3851e1..8bb0483022 100644 --- a/libafl_qemu/libqasan/string.c +++ b/libafl_qemu/libqasan/string.c @@ -128,9 +128,14 @@ int __libqasan_strncmp(const char *str1, const char *str2, size_t len) { return 0; } +unsigned char __libqasan_tolower(unsigned char c) { + if (c >= 'A' && c <= 'Z') return c | 0x20; + return c; +} + int __libqasan_strcasecmp(const char *str1, const char *str2) { while (1) { - const unsigned char c1 = tolower(*str1), c2 = tolower(*str2); + const unsigned char c1 = __libqasan_tolower(*str1), c2 = __libqasan_tolower(*str2); if (c1 != c2) { return c1 - c2; } if (!c1) { return 0; } @@ -143,7 +148,7 @@ int __libqasan_strcasecmp(const char *str1, const char *str2) { int __libqasan_strncasecmp(const char *str1, const char *str2, size_t len) { while (len--) { - const unsigned char c1 = tolower(*str1), c2 = tolower(*str2); + const unsigned char c1 = __libqasan_tolower(*str1), c2 = __libqasan_tolower(*str2); if (c1 != c2) { return c1 - c2; } if (!c1) { return 0; } @@ -204,7 +209,7 @@ char *__libqasan_strcasestr(const char *haystack, const char *needle) { const char *n = needle; const char *h = haystack; - while (*n && *h && tolower(*n) == tolower(*h)) { + while (*n && *h && __libqasan_tolower(*n) == __libqasan_tolower(*h)) { n++; h++; }