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