[3.10] bpo-46110: Add a recursion check to avoid stack overflow in the PEG parser (GH-30177) (GH-30214)
Co-authored-by: Batuhan Taskaya <isidentical@gmail.com>.
(cherry picked from commit e9898bf153d26059261ffef11f7643ae991e2a4c)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 8f961c6..b5bebb3 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -1576,6 +1576,14 @@ def test_syntax_error_on_deeply_nested_blocks(self):
"""
self._check_error(source, "too many statically nested blocks")
+ @support.cpython_only
+ def test_error_on_parser_stack_overflow(self):
+ source = "-" * 100000 + "4"
+ for mode in ["exec", "eval", "single"]:
+ with self.subTest(mode=mode):
+ with self.assertRaises(MemoryError):
+ compile(source, "<string>", mode)
+
def test_main():
support.run_unittest(SyntaxTestCase)