LibRegex: Fix assertion when parsing '(?'

Found by oss-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28186&q=label%3AProj-serenity
This commit is contained in:
AnotherTest 2020-12-03 12:28:47 +03:30 committed by Andreas Kling
parent 4fe987ba00
commit c1c5225b72
Notes: sideshowbarker 2024-07-19 01:04:43 +09:00
2 changed files with 4 additions and 0 deletions

View File

@ -64,6 +64,9 @@ ALWAYS_INLINE char Lexer::peek(size_t offset) const
void Lexer::back(size_t offset)
{
if (offset == m_position + 1)
offset = m_position; // 'position == 0' occurs twice.
ASSERT(offset <= m_position);
if (!offset)
return;

View File

@ -496,6 +496,7 @@ TEST_CASE(ECMA262_parse)
{ ",/=-:" }, // #4243
{ "\\x" }, // Even invalid escapes are allowed if ~unicode.
{ "\\", regex::Error::InvalidTrailingEscape },
{ "(?", regex::Error::InvalidCaptureGroup },
};
for (auto& test : tests) {