From a9560afbbeb00df40e55f3cfd6629886c2890db0 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 15 Jan 2020 21:07:05 +0200 Subject: [PATCH] fts-solr: Add asserts to make sure make sure uni_utf8_get_char_n() returns valid UTF-8 FTS input is always valid UTF-8. This just makes it a bit clearer. --- src/plugins/fts-solr/fts-backend-solr-old.c | 5 +++-- src/plugins/fts-solr/fts-backend-solr.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/fts-solr/fts-backend-solr-old.c b/src/plugins/fts-solr/fts-backend-solr-old.c index ca98a69ab9..842dad31a9 100644 --- a/src/plugins/fts-solr/fts-backend-solr-old.c +++ b/src/plugins/fts-solr/fts-backend-solr-old.c @@ -91,9 +91,10 @@ xml_encode_data(string_t *dest, const unsigned char *data, size_t len) } else if (data[i] >= 0x80) { /* make sure the character is valid for XML so we don't get XML parser errors */ - unsigned int char_len = + int char_len = uni_utf8_get_char_n(data + i, len - i, &chr); - if (char_len > 0 && is_valid_xml_char(chr)) + i_assert(char_len > 0); /* input is valid UTF8 */ + if (is_valid_xml_char(chr)) str_append_data(dest, data + i, char_len); else { str_append_data(dest, utf8_replacement_char, diff --git a/src/plugins/fts-solr/fts-backend-solr.c b/src/plugins/fts-solr/fts-backend-solr.c index d3f890e36e..fbd8d5a38e 100644 --- a/src/plugins/fts-solr/fts-backend-solr.c +++ b/src/plugins/fts-solr/fts-backend-solr.c @@ -115,9 +115,10 @@ xml_encode_data_max(string_t *dest, const unsigned char *data, size_t len, } else if (data[i] >= 0x80) { /* make sure the character is valid for XML so we don't get XML parser errors */ - unsigned int char_len = + int char_len = uni_utf8_get_char_n(data + i, len - i, &chr); - if (char_len > 0 && is_valid_xml_char(chr)) + i_assert(char_len > 0); /* input is valid UTF8 */ + if (is_valid_xml_char(chr)) str_append_data(dest, data + i, char_len); else { str_append_data(dest, utf8_replacement_char, -- 2.47.3