From: Stephan Bosch Date: Thu, 31 May 2018 21:59:50 +0000 (+0200) Subject: lib: str-sanitize: Use uni_utf8_data_truncate(). X-Git-Tag: 2.3.9~1653 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=571a8abd1e21ca178245051c84efd4d38d36eecf;p=thirdparty%2Fdovecot%2Fcore.git lib: str-sanitize: Use uni_utf8_data_truncate(). --- diff --git a/src/lib/str-sanitize.c b/src/lib/str-sanitize.c index 183ab081f1..859640a18a 100644 --- a/src/lib/str-sanitize.c +++ b/src/lib/str-sanitize.c @@ -48,21 +48,14 @@ static void str_sanitize_truncate_char(string_t *dest, unsigned int initial_pos) const unsigned char *data = str_data(dest); size_t len = str_len(dest); + i_assert(len >= initial_pos); if (len == initial_pos) return; - i_assert(len > 0); - if ((data[len-1] & 0x80) == 0) { - str_truncate(dest, len-1); - return; - } - /* truncate UTF-8 sequence. */ - while (len > 0 && (data[len-1] & 0xc0) == 0x80) - len--; - if (len > 0 && (data[len-1] & 0xc0) == 0xc0) - len--; - if (len >= initial_pos) - str_truncate(dest, len); + data += initial_pos; + len -= initial_pos; + str_truncate(dest, initial_pos + + uni_utf8_data_truncate(data, len, len-1)); } void str_sanitize_append(string_t *dest, const char *src, size_t max_bytes)