mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00
gh-107450: Check for overflow in the tokenizer and fix overflow test (#110832)
Co-authored-by: Filipe Laíns <lains@riseup.net> Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
b3c9faf056
commit
a1ac5590e0
4 changed files with 40 additions and 22 deletions
|
@ -18,6 +18,12 @@ from test.support.os_helper import TESTFN, unlink
|
|||
from test.support.warnings_helper import check_warnings
|
||||
from test import support
|
||||
|
||||
try:
|
||||
from _testcapi import INT_MAX
|
||||
except ImportError:
|
||||
INT_MAX = 2**31 - 1
|
||||
|
||||
|
||||
|
||||
class NaiveException(Exception):
|
||||
def __init__(self, x):
|
||||
|
@ -318,11 +324,13 @@ class ExceptionTests(unittest.TestCase):
|
|||
check('(yield i) = 2', 1, 2)
|
||||
check('def f(*):\n pass', 1, 7)
|
||||
|
||||
@unittest.skipIf(INT_MAX >= sys.maxsize, "Downcasting to int is safe for col_offset")
|
||||
@support.requires_resource('cpu')
|
||||
@support.bigmemtest(support._2G, memuse=1.5)
|
||||
def testMemoryErrorBigSource(self, _size):
|
||||
with self.assertRaises(OverflowError):
|
||||
exec(f"if True:\n {' ' * 2**31}print('hello world')")
|
||||
@support.bigmemtest(INT_MAX, memuse=2, dry_run=False)
|
||||
def testMemoryErrorBigSource(self, size):
|
||||
src = b"if True:\n%*s" % (size, b"pass")
|
||||
with self.assertRaisesRegex(OverflowError, "Parser column offset overflow"):
|
||||
compile(src, '<fragment>', 'exec')
|
||||
|
||||
@cpython_only
|
||||
def testSettingException(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue