diff options
author | Kurt McKee <contactme@kurtmckee.org> | 2020-11-09 00:26:21 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-09 07:26:21 +0100 |
commit | fb40b7113e6c71f29c110cc9c32077a0883b732b (patch) | |
tree | 0747d9f1df61997fa3247353eeb38566ddecb478 /pygments/lexers/jvm.py | |
parent | afa9e3be5a05a27ed2c8ac515a10e146a766ad15 (diff) | |
download | pygments-git-fb40b7113e6c71f29c110cc9c32077a0883b732b.tar.gz |
Fix a catastrophic backtracking bug in JavaLexer (#1594)
* JavaLexer: Demonstrate a catastrophic backtracking bug
* JavaLexer: Fix a catastrophic backtracking bug
Closes #1586
Diffstat (limited to 'pygments/lexers/jvm.py')
-rw-r--r-- | pygments/lexers/jvm.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index ee0bc7af..2736329d 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -65,7 +65,7 @@ class JavaLexer(RegexLexer): 'var'), (r'(import(?:\s+static)?)(\s+)', bygroups(Keyword.Namespace, Text), 'import'), - (r'"(\\\\|\\"|[^"])*"', String), + (r'"', String, 'string'), (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char), (r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Punctuation, Name.Attribute)), @@ -96,6 +96,13 @@ class JavaLexer(RegexLexer): 'import': [ (r'[\w.]+\*?', Name.Namespace, '#pop') ], + 'string': [ + (r'[^\\"]+', String), + (r'\\\\', String), # Escaped backslash + (r'\\"', String), # Escaped quote + (r'\\', String), # Bare backslash + (r'"', String, '#pop'), # Closing quote + ], } |