]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Fix indexing input that contains NULs
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 25 Apr 2018 12:17:53 +0000 (15:17 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 27 Apr 2018 11:19:04 +0000 (14:19 +0300)
Any message_block that contained NULs, but otherwise was valid UTF-8, was
simply dropped.

src/plugins/fts/fts-parser.c

index a313a456baec36c1a5f64b6b0c9b12e817f6d353..c0eac80d25acc0fd72651e3868bdf340826f20a8 100644 (file)
@@ -83,8 +83,12 @@ void fts_parser_more(struct fts_parser *parser, struct message_block *block)
                } 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;