https://github.com/python/cpython/commit/8706167474e9a625e5f6613d3c7ac77a62faff58
commit: 8706167474e9a625e5f6613d3c7ac77a62faff58
branch: main
author: Mikhail Efimov <[email protected]>
committer: pablogsal <[email protected]>
date: 2025-10-29T13:27:35Z
summary:

gh-140576: Fixed crash produced by lexer in case of dedented zero byte (#140583)

files:
A 
Misc/NEWS.d/next/Core_and_Builtins/2025-10-25-17-36-46.gh-issue-140576.kj0SCY.rst
M Lib/test/test_tokenize.py
M Parser/lexer/lexer.c

diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py
index d274726eed2e65..ca67e381958757 100644
--- a/Lib/test/test_tokenize.py
+++ b/Lib/test/test_tokenize.py
@@ -3183,6 +3183,7 @@ def get_tokens(string):
             f'__{
                 x:d
             }__'""",
+            " a\n\x00",
         ]:
             with self.subTest(case=case):
                 self.assertRaises(tokenize.TokenError, get_tokens, case)
diff --git 
a/Misc/NEWS.d/next/Core_and_Builtins/2025-10-25-17-36-46.gh-issue-140576.kj0SCY.rst
 
b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-25-17-36-46.gh-issue-140576.kj0SCY.rst
new file mode 100644
index 00000000000000..2c27525d9f782c
--- /dev/null
+++ 
b/Misc/NEWS.d/next/Core_and_Builtins/2025-10-25-17-36-46.gh-issue-140576.kj0SCY.rst
@@ -0,0 +1,2 @@
+Fixed crash in :func:`tokenize.generate_tokens` in case of
+specific incorrect input. Patch by Mikhail Efimov.
diff --git a/Parser/lexer/lexer.c b/Parser/lexer/lexer.c
index a69994e9b3d005..7f25afec302c22 100644
--- a/Parser/lexer/lexer.c
+++ b/Parser/lexer/lexer.c
@@ -539,6 +539,9 @@ tok_get_normal_mode(struct tok_state *tok, tokenizer_mode* 
current_tok, struct t
                     return MAKE_TOKEN(ERRORTOKEN);
                 }
             }
+            else if (c == EOF && PyErr_Occurred()) {
+                return MAKE_TOKEN(ERRORTOKEN);
+            }
             else {
                 break;
             }

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to