diff options
author | Fredrik Lundh <fredrik@pythonware.com> | 2001-02-18 21:04:48 (GMT) |
---|---|---|
committer | Fredrik Lundh <fredrik@pythonware.com> | 2001-02-18 21:04:48 (GMT) |
commit | c0c7ee3a6536bbea2b9632a4cc9f6cac2a4bd9b6 (patch) | |
tree | 1aedbd30e101240d849686fcc4106d686ae983f2 | |
parent | 8ac3627b91979a069d84fb9e8500eab0a99ce762 (diff) | |
download | cpython-c0c7ee3a6536bbea2b9632a4cc9f6cac2a4bd9b6.zip cpython-c0c7ee3a6536bbea2b9632a4cc9f6cac2a4bd9b6.tar.gz cpython-c0c7ee3a6536bbea2b9632a4cc9f6cac2a4bd9b6.tar.bz2 |
detect attempts to repeat anchors (fixes bug #130748)
-rw-r--r-- | Lib/sre_parse.py | 3 | ||||
-rwxr-xr-x | Lib/test/re_tests.py | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py index 36036b6..3840365 100644 --- a/Lib/sre_parse.py +++ b/Lib/sre_parse.py @@ -446,6 +446,7 @@ def _parse(source, state): min, max = 0, 1 elif this == "*": min, max = 0, MAXREPEAT + elif this == "+": min, max = 1, MAXREPEAT elif this == "{": @@ -475,6 +476,8 @@ def _parse(source, state): if subpattern: item = subpattern[-1:] else: + item = None + if not item or (len(item) == 1 and item[0][0] == AT): raise error, "nothing to repeat" if item[0][0] in (MIN_REPEAT, MAX_REPEAT): raise error, "multiple repeat" diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py index 9daf8c4..aacd916 100755 --- a/Lib/test/re_tests.py +++ b/Lib/test/re_tests.py @@ -636,4 +636,6 @@ xyzabc (r'(?i)m+', 'MMM', SUCCEED, 'found', 'MMM'), (r'(?i)[M]+', 'MMM', SUCCEED, 'found', 'MMM'), (r'(?i)[m]+', 'MMM', SUCCEED, 'found', 'MMM'), + # bug 130748: ^* should be an error (nothing to repeat) + (r'^*', '', SYNTAX_ERROR), ] |