Lexer: ::isDOM failed to enforce minimum size before allowing no endBoundary
This commit is contained in:
@@ -520,6 +520,7 @@ bool Lexer::isUUID (std::string& token, Lexer::Type& type, bool endBoundary)
|
|||||||
{
|
{
|
||||||
std::size_t marker = _cursor;
|
std::size_t marker = _cursor;
|
||||||
|
|
||||||
|
// Greedy.
|
||||||
std::size_t i = 0;
|
std::size_t i = 0;
|
||||||
for (; i < 36 && marker + i < _eos; i++)
|
for (; i < 36 && marker + i < _eos; i++)
|
||||||
{
|
{
|
||||||
@@ -532,11 +533,11 @@ bool Lexer::isUUID (std::string& token, Lexer::Type& type, bool endBoundary)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! endBoundary ||
|
if (i >= uuid_min_length &&
|
||||||
(i >= uuid_min_length &&
|
(! endBoundary ||
|
||||||
(_text[marker + i] == 0 ||
|
! _text[marker + i] ||
|
||||||
isWhitespace (_text[marker + i]) ||
|
isWhitespace (_text[marker + i]) ||
|
||||||
isSingleCharOperator (_text[marker + i]))))
|
isSingleCharOperator (_text[marker + i])))
|
||||||
{
|
{
|
||||||
token = _text.substr (_cursor, i);
|
token = _text.substr (_cursor, i);
|
||||||
if (! isAllDigits (token))
|
if (! isAllDigits (token))
|
||||||
|
|||||||
Reference in New Issue
Block a user