From ba6371cea5744197f9bdb8db1a55fa153e876412 Mon Sep 17 00:00:00 2001 From: "mrbkap%gmail.com" Date: Mon, 6 Feb 2006 18:54:53 +0000 Subject: [PATCH] Don't get confused by multiple right square brackets when parsing CDATA sections. bug 325532, r+sr=jst git-svn-id: svn://10.0.0.236/trunk@189021 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/parser/htmlparser/src/nsHTMLTokens.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp index 38981bebb8f..2d7cadd2144 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp @@ -1036,7 +1036,17 @@ CCDATASectionToken::Consume(PRUnichar aChar, nsScanner& aScanner, PRBool inCDATA = (aFlag & NS_IPARSER_FLAG_VIEW_SOURCE) && StringBeginsWith(mTextValue, NS_LITERAL_STRING("[CDATA[")); if (inCDATA) { - result = aScanner.Peek(aChar); + // Consume all right square brackets to catch cases such as: + // + while (true) { + result = aScanner.Peek(aChar); + if (result != NS_OK || aChar != kRightSquareBracket) { + break; + } + + mTextValue.Append(aChar); + aScanner.GetChar(aChar); + } } else { nsAutoString dummy; // Skip any bad data result = aScanner.ReadUntil(dummy, kGreaterThan, PR_FALSE);