Changeset 280825 in webkit
- Timestamp:
- Aug 9, 2021 11:56:17 PM (11 months ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/test262/expectations.yaml (modified) (1 diff)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/parser/Lexer.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r280765 r280825 1 2021-08-09 Yusuke Suzuki <ysuzuki@apple.com> 2 3 [JSC] super-Latin1 white space and line terminator after regular expression literal misinterpreted as flags 4 https://bugs.webkit.org/show_bug.cgi?id=227944 5 6 Reviewed by Alexey Shvayka. 7 8 * test262/expectations.yaml: 9 1 10 2021-08-08 Yusuke Suzuki <ysuzuki@apple.com> 2 11 -
trunk/JSTests/test262/expectations.yaml
r280765 r280825 1961 1961 default: 'Test262Error: Expected SameValue(«3», «42») to be true' 1962 1962 strict mode: 'Test262Error: Expected SameValue(«3», «42») to be true' 1963 test/language/white-space/after-regular-expression-literal-em-quad.js:1964 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1965 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1966 test/language/white-space/after-regular-expression-literal-em-space.js:1967 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1968 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1969 test/language/white-space/after-regular-expression-literal-en-quad.js:1970 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1971 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1972 test/language/white-space/after-regular-expression-literal-en-space.js:1973 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1974 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1975 test/language/white-space/after-regular-expression-literal-figure-space.js:1976 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1977 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1978 test/language/white-space/after-regular-expression-literal-four-per-em-space.js:1979 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1980 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1981 test/language/white-space/after-regular-expression-literal-hair-space.js:1982 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1983 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1984 test/language/white-space/after-regular-expression-literal-ideographic-space.js:1985 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1986 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1987 test/language/white-space/after-regular-expression-literal-line-separator.js:1988 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g1989 '"1990 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g1991 '"1992 test/language/white-space/after-regular-expression-literal-medium-mathematical-space.js:1993 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1994 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1995 test/language/white-space/after-regular-expression-literal-nnbsp.js:1996 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1997 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"1998 test/language/white-space/after-regular-expression-literal-ogham-space.js:1999 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2000 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2001 test/language/white-space/after-regular-expression-literal-paragraph-separator.js:2002 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g2003 '"2004 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g2005 '"2006 test/language/white-space/after-regular-expression-literal-punctuation-space.js:2007 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2008 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2009 test/language/white-space/after-regular-expression-literal-six-per-em-space.js:2010 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2011 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2012 test/language/white-space/after-regular-expression-literal-thin-space.js:2013 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2014 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2015 test/language/white-space/after-regular-expression-literal-three-per-em-space.js:2016 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2017 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g '"2018 test/language/white-space/after-regular-expression-literal-zwnbsp.js:2019 default: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g'"2020 strict mode: "SyntaxError: Invalid non-latin character in RexExp literal's flags '/x/g'" -
trunk/Source/JavaScriptCore/ChangeLog
r280809 r280825 1 2021-08-09 Yusuke Suzuki <ysuzuki@apple.com> 2 3 [JSC] super-Latin1 white space and line terminator after regular expression literal misinterpreted as flags 4 https://bugs.webkit.org/show_bug.cgi?id=227944 5 6 Reviewed by Alexey Shvayka. 7 8 There are non-Latin1 white-spaces and line-terminators, but Lexer::scanRegExp's code did not assume that. 9 As a result, if there is a non-Latin1 white-spaces or line-terminators after RegExp, we raise SyntaxError 10 while this is valid. This patch fixes that. 11 12 * parser/Lexer.cpp: 13 (JSC::Lexer<T>::scanRegExp): 14 1 15 2021-08-09 Michael Catanzaro <mcatanzaro@gnome.org> 2 16 -
trunk/Source/JavaScriptCore/parser/Lexer.cpp
r278253 r280825 2658 2658 2659 2659 // Normally this would not be a lex error but dealing with surrogate pairs here is annoying and it's going to be an error anyway... 2660 if (UNLIKELY(!isLatin1(m_current) )) {2660 if (UNLIKELY(!isLatin1(m_current) && !isWhiteSpace(m_current) && !isLineTerminator(m_current))) { 2661 2661 m_buffer8.shrink(0); 2662 2662 JSTokenType token = INVALID_IDENTIFIER_UNICODE_ERRORTOK; … … 2673 2673 m_buffer8.shrink(0); 2674 2674 2675 // Since RegExp always ends with / , m_atLineStart always becomes false.2675 // Since RegExp always ends with / or flags (IdentifierPart), m_atLineStart always becomes false. 2676 2676 m_atLineStart = false; 2677 2677
Note: See TracChangeset
for help on using the changeset viewer.