]> 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:14:47 +0000 (14:14 +0300)
Any message_block that contained NULs, but otherwise was valid UTF-8, was
simply dropped.

src/plugins/fts/fts-parser.c

index 15249567d677afd3218bb2deeea939f2aa342a87..8fc5c7f166d4f88c2a2dd913a6564f38150e0339 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;