mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	LibRegex: Fix ECMA-262 parsing of invalid identity escapes
* Only alphabetic (A-Z, a-z) characters may be escaped with \c. The loop currently parsing \c includes code points between the upper/lower case groups. * In Unicode mode, all invalid identity escapes should cause a parser error, even in browser-extended mode. * Avoid an infinite loop when parsing the pattern "\c" on its own.
This commit is contained in:
		
							parent
							
								
									51b3fb5532
								
							
						
					
					
						commit
						e887314472
					
				
					 2 changed files with 35 additions and 11 deletions
				
			
		|  | @ -525,6 +525,18 @@ TEST_CASE(ECMA262_parse) | |||
|         { "\\\\p{1}", regex::Error::NoError, ECMAScriptFlags::Unicode }, | ||||
|         { "\\\\p{AsCiI}", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "\\\\p{ASCII}", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "\\c", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\c", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "[\\c]", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "[\\c]", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "\\c`", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\c`", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "[\\c`]", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "[\\c`]", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|         { "\\A", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\A", regex::Error::InvalidCharacterClass, ECMAScriptFlags::Unicode }, | ||||
|         { "[\\A]", regex::Error::NoError, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "[\\A]", regex::Error::InvalidPattern, ECMAScriptFlags::Unicode }, | ||||
|     }; | ||||
| 
 | ||||
|     for (auto& test : tests) { | ||||
|  | @ -579,6 +591,7 @@ TEST_CASE(ECMA262_match) | |||
|         { "\\05", "\5", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\455", "\45""5", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\314", "\314", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\c", "\\c", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\cf", "\06", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "\\c1", "\\c1", true, ECMAScriptFlags::BrowserExtended }, | ||||
|         { "[\\c1]", "\x11", true, ECMAScriptFlags::BrowserExtended }, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn