changeset 22923:afb793aaaccb

fts: Fix indexing input that contains NULs Any message_block that contained NULs, but otherwise was valid UTF-8, was simply dropped.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 25 Apr 2018 15:17:53 +0300
parents a556724ce39b
children 517b40c65bc5
files src/plugins/fts/fts-parser.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts/fts-parser.c	Sat Apr 14 02:05:51 2018 +0200
+++ b/src/plugins/fts/fts-parser.c	Wed Apr 25 15:17:53 2018 +0300
@@ -83,8 +83,12 @@
 		} else {
 			buffer_set_used_size(parser->utf8_output, 0);
 		}
-		(void)uni_utf8_get_valid_data(block->data, block->size,
-					      parser->utf8_output);
+		if (uni_utf8_get_valid_data(block->data, block->size,
+					    parser->utf8_output)) {
+			/* valid UTF-8, but there were NULs */
+			buffer_append(parser->utf8_output, block->data,
+				      block->size);
+		}
 		replace_nul_bytes(parser->utf8_output);
 		block->data = parser->utf8_output->data;
 		block->size = parser->utf8_output->used;