Mercurial > dovecot > core-2.2
changeset 13253:69cf3bb0b8e8
fts: Assert-crashfix to HTML parsing if the document ends with a small tag.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 16 Aug 2011 18:50:42 +0300 |
parents | 32315c24992c |
children | 9c76b6239fff |
files | src/plugins/fts/fts-parser-html.c |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts/fts-parser-html.c Tue Aug 16 18:33:27 2011 +0300 +++ b/src/plugins/fts/fts-parser-html.c Tue Aug 16 18:50:42 2011 +0300 @@ -64,7 +64,7 @@ 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 @@ 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; }