]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Assert-crashfix to HTML parsing if the document ends with a small tag.
authorTimo Sirainen <tss@iki.fi>
Tue, 16 Aug 2011 15:50:42 +0000 (18:50 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 16 Aug 2011 15:50:42 +0000 (18:50 +0300)
src/plugins/fts/fts-parser-html.c

index 470c15b1ef13bc6e0a90b8f98a069c39c2933d44..6c1faefc2ed8022e926c453c3a49580de2608e57 100644 (file)
@@ -64,7 +64,7 @@ static bool
 parse_tag_name(struct html_fts_parser *parser,
               const unsigned char *data, size_t size)
 {
-       size_t i = 1;
+       size_t i;
 
        if (size >= 3 && memcmp(data, "!--", 3) == 0) {
                parser->state = HTML_STATE_COMMENT;
@@ -75,10 +75,18 @@ parse_tag_name(struct html_fts_parser *parser,
                i = 5;
        } else if (size > 6 && i_memcasecmp(data, "script", 6) == 0) {
                i = 6;
-       } else if (size <= 6) {
-               /* need more data */
-               return 0;
        } else {
+               if (size <= 6) {
+                       /* can we see the whole tag name? */
+                       for (i = 0; i < size; i++) {
+                               if (HTML_WHITESPACE(data[i]) || data[i] == '>')
+                                       break;
+                       }
+                       if (i == size) {
+                               /* need more data */
+                               return 0;
+                       }
+               }
                parser->state = HTML_STATE_TAG;
                return 1;
        }