Skip to content

gh-159739: Fix crash in _PyTuple_Resize() with an invalid size - #159804

Merged
gpshead merged 3 commits into
python:mainfrom
gpshead:claude/elegant-faraday-p69m3r
Oct 20, 2026
Merged

gpshead merged 3 commits into
python:mainfrom
gpshead:claude/elegant-faraday-p69m3r

Conversation

@gpshead

@gpshead gpshead commented Oct 19, 2026 •

Copy link
Copy Markdown
Member

Fix a crash in _PyTuple_Resize when resizing a non-empty tuple to a
negative or too large size. It now raises SystemError or
MemoryError respectively.

@gpshead gpshead self-assigned this Oct 19, 2026
@gpshead
gpshead force-pushed the claude/elegant-faraday-p69m3r branch from 339d31a to 48e893e Compare October 19, 2026 22:34
@python python deleted a comment from python-cla-bot Bot Oct 19, 2026
@python-cla-bot

python-cla-bot Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

All commit authors signed the Contributor License Agreement.

CLA signed

Check that the items of a non-empty tuple are released when the
reallocation in _PyTuple_Resize() fails.
_PyTuple_Resize() did not validate newsize for non-empty tuples.

Raise SystemError for a negative size and MemoryError for a too-large size,
like PyTuple_New() already does for the empty-tuple path.
@gpshead
gpshead force-pushed the claude/elegant-faraday-p69m3r branch from 1afc2ec to db04f57 Compare October 19, 2026 22:43
@gpshead gpshead added needs backport to 3.14 bugs and security fixes needs backport to 3.15 bugs and security fixes labels Oct 19, 2026
It relied on a huge allocation request failing, which is not portable:
TSan aborts on it and it succeeds on wasm32 (WASI).
@gpshead
gpshead marked this pull request as ready for review October 20, 2026 22:59
@gpshead
gpshead merged commit c360884 into python:main Oct 20, 2026
58 checks passed
@miss-islington-app

Copy link
Copy Markdown

Thanks @gpshead for the PR 🌮🎉.. I'm working now to backport this PR to: 3.14, 3.15.
🐍🍒⛏🤖

@bedevere-app

bedevere-app Bot commented Oct 20, 2026

Copy link
Copy Markdown

GH-159976 is a backport of this pull request to the 3.15 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.15 bugs and security fixes label Oct 20, 2026
@bedevere-app

bedevere-app Bot commented Oct 20, 2026

Copy link
Copy Markdown

GH-159977 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.14 bugs and security fixes label Oct 20, 2026
gpshead added a commit that referenced this pull request Oct 21, 2026
…GH-159804) (#159976)

gh-159739: Fix crash in _PyTuple_Resize() with an invalid size (GH-159804)

_PyTuple_Resize() did not validate newsize for non-empty tuples.

Raise SystemError for a negative size and MemoryError for a too-large size,
like PyTuple_New() already does for the empty-tuple path.
(cherry picked from commit c360884)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
gpshead added a commit that referenced this pull request Oct 21, 2026
…GH-159804) (#159977)

gh-159739: Fix crash in _PyTuple_Resize() with an invalid size (GH-159804)

_PyTuple_Resize() did not validate newsize for non-empty tuples.

Raise SystemError for a negative size and MemoryError for a too-large size,
like PyTuple_New() already does for the empty-tuple path.
(cherry picked from commit c360884)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant