mirror of
https://github.com/RGBCube/serenity
synced 2025-07-24 15:17:45 +00:00
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:
parent
4fe987ba00
commit
c1c5225b72
2 changed files with 4 additions and 0 deletions
|
@ -64,6 +64,9 @@ ALWAYS_INLINE char Lexer::peek(size_t offset) const
|
||||||
|
|
||||||
void Lexer::back(size_t offset)
|
void Lexer::back(size_t offset)
|
||||||
{
|
{
|
||||||
|
if (offset == m_position + 1)
|
||||||
|
offset = m_position; // 'position == 0' occurs twice.
|
||||||
|
|
||||||
ASSERT(offset <= m_position);
|
ASSERT(offset <= m_position);
|
||||||
if (!offset)
|
if (!offset)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -496,6 +496,7 @@ TEST_CASE(ECMA262_parse)
|
||||||
{ ",/=-:" }, // #4243
|
{ ",/=-:" }, // #4243
|
||||||
{ "\\x" }, // Even invalid escapes are allowed if ~unicode.
|
{ "\\x" }, // Even invalid escapes are allowed if ~unicode.
|
||||||
{ "\\", regex::Error::InvalidTrailingEscape },
|
{ "\\", regex::Error::InvalidTrailingEscape },
|
||||||
|
{ "(?", regex::Error::InvalidCaptureGroup },
|
||||||
};
|
};
|
||||||
|
|
||||||
for (auto& test : tests) {
|
for (auto& test : tests) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue