Add end state to text handler and use to ensure that in nextTokenType to stop an out of bounds access to m_databuffer
This commit is contained in:
@@ -219,8 +219,12 @@ void TextHandler::next()
|
||||
|
||||
void TextHandler::nextTokenType()
|
||||
{
|
||||
if (m_nextTokenType == Type::Tag && getTagType() == QStringLiteral("code") && !isCloseTag()
|
||||
&& m_dataBuffer.indexOf(QStringLiteral("</code>"), m_pos) != m_pos) {
|
||||
if (m_pos >= m_dataBuffer.length()) {
|
||||
// This is to stop the function accessing an index outside the length of
|
||||
// m_dataBuffer during the final loop.
|
||||
m_nextTokenType = Type::End;
|
||||
} else if (m_nextTokenType == Type::Tag && getTagType() == QStringLiteral("code") && !isCloseTag()
|
||||
&& m_dataBuffer.indexOf(QStringLiteral("</code>"), m_pos) != m_pos) {
|
||||
m_nextTokenType = Type::TextCode;
|
||||
} else if (m_dataBuffer[m_pos] == u'<' && m_dataBuffer[m_pos + 1] != u' ') {
|
||||
m_nextTokenType = Type::Tag;
|
||||
|
||||
@@ -48,6 +48,7 @@ public:
|
||||
Text, /*!< Anything not a tag that doesn't have special handling */
|
||||
Tag, /*!< For any generic tag that doesn't have special handling */
|
||||
TextCode, /*!< Text between code tags */
|
||||
End, /*!< End of the input string */
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user