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;
 	}