]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-144759: Fix undefined behavior from NULL pointer arithmetic in lexer (#144788)
authorRamin Farajpour Cami <ramin.blackhat@gmail.com>
Sun, 15 Feb 2026 14:39:57 +0000 (18:09 +0330)
committerGitHub <noreply@github.com>
Sun, 15 Feb 2026 14:39:57 +0000 (14:39 +0000)
commite6110efd03259acd1895cff63fbfa115ac5f16dc
treeb87c76b6de6106bc246053293b57262e4b113dc6
parent645f5c4a737b3eab29d0b7bcd4ec5f8bd36f332d
gh-144759: Fix undefined behavior from NULL pointer arithmetic in lexer (#144788)

Guard against NULL pointer arithmetic in `_PyLexer_remember_fstring_buffers`
and `_PyLexer_restore_fstring_buffers`. When `start` or `multi_line_start`
are NULL (uninitialized in tok_mode_stack[0]), performing `NULL - tok->buf`
is undefined behavior. Add explicit NULL checks to store -1 as sentinel
and restore NULL accordingly.

Add test_lexer_buffer_realloc_with_null_start to test_repl.py that
exercises the code path where the lexer buffer is reallocated while
tok_mode_stack[0] has NULL start/multi_line_start pointers. This
triggers _PyLexer_remember_fstring_buffers and verifies the NULL
checks prevent undefined behavior.
Lib/test/test_repl.py
Misc/NEWS.d/next/Core_and_Builtins/2026-02-13-12-00-00.gh-issue-144759.d3qYpe.rst [new file with mode: 0644]
Parser/lexer/buffer.c