gh-103824: fix use-after-free error in Parser/tokenizer.c (#103993)

This commit is contained in:
chgnrdv 2023-05-01 18:26:43 +03:00 committed by GitHub
parent 99aab61062
commit d5a97074d2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View file

@ -11,7 +11,7 @@ from unittest import TestCase, mock
from test.test_grammar import (VALID_UNDERSCORE_LITERALS,
INVALID_UNDERSCORE_LITERALS)
from test.support import os_helper
from test.support.script_helper import run_test_script, make_script
from test.support.script_helper import run_test_script, make_script, run_python_until_end
import os
import token
@ -1470,6 +1470,19 @@ class TestTokenize(TestCase):
self.assertEqual(tok_name[tokens[i + 1].exact_type], tok_name[expected_tokens[i]])
self.assertEqual(tok_name[tokens[-1].exact_type], tok_name[token.ENDMARKER])
def test_invalid_character_in_fstring_middle(self):
# See gh-103824
script = b'''F"""
\xe5"""'''
with os_helper.temp_dir() as temp_dir:
filename = os.path.join(temp_dir, "script.py")
with open(filename, 'wb') as file:
file.write(script)
rs, _ = run_python_until_end(filename)
self.assertIn(b"SyntaxError", rs.err)
class UntokenizeTest(TestCase):
def test_bad_input_order(self):