Skip to content

GH-93964: Harden overflow checks before _PyBytes_Resize in compile.c - #94044

Open
sweeneyde wants to merge 8 commits into
python:mainfrom
sweeneyde:compile_overflows
Open

GH-93964: Harden overflow checks before _PyBytes_Resize in compile.c#94044
sweeneyde wants to merge 8 commits into
python:mainfrom
sweeneyde:compile_overflows

Conversation

@sweeneyde

@sweeneydesweeneyde commented Jun 21, 2022

Copy link
Copy Markdown
Member

#93964

The issue was found in 3.10, so it will need to be manually backported there.

@sweeneyde
sweeneyde marked this pull request as draft June 21, 2022 03:43
@sweeneyde
sweeneyde marked this pull request as ready for review June 21, 2022 04:48
@sweeneydesweeneyde added the needs backport to 3.11 only security fixes label Jun 21, 2022
Comment threadPython/compile.c Outdated
Py_ssize_t b_len = PyBytes_GET_SIZE(*bytes);
if (unitsize * logical_length >= b_len - to_add * unitsize) {
// There's not enough room. Double it.
if (b_len > PY_SSIZE_T_MAX / 2) {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has the same issue as the backport.
We want to be able to index all code object structures with an int, so you'll need INT_MAX instead of PY_SSIZE_T_MAX and it should be an overflow error, not a memory error.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, we want a_bytecode to be able to have INT_MAX code units, not just INT_MAX bytes, right?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We probably want the smaller amount to avoid risk of overflow. So the length in bytes should be less than INT_MAX.

@arhadthedev

Copy link
Copy Markdown
Member

Is the PR still relevant or some other PR superseded this one?

For merge conflict resolution: touched functions were moved to Python/assemble.c by gh-103277.

cc @iritkatriel

@serhiy-storchakaserhiy-storchaka added needs backport to 3.12 only security fixes needs backport to 3.13 bugs and security fixes and removed needs backport to 3.11 only security fixes labels May 9, 2024
@serhiy-storchakaserhiy-storchaka added the needs backport to 3.14 bugs and security fixes label May 8, 2025
@ZeroIntensityZeroIntensity removed the needs backport to 3.12 only security fixes label May 29, 2025
@github-actions

Copy link
Copy Markdown

This PR is stale because it has been open for 30 days with no activity.

@github-actionsgithub-actionsBot added the stale Stale PR or inactive for long period of time. label Apr 11, 2026
@serhiy-storchakaserhiy-storchaka added the needs backport to 3.15 pre-release feature fixes, bugs and security fixes label May 30, 2026
@github-actionsgithub-actionsBot removed the stale Stale PR or inactive for long period of time. label Jun 5, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting core reviewneeds backport to 3.13bugs and security fixesneeds backport to 3.14bugs and security fixesneeds backport to 3.15pre-release feature fixes, bugs and security fixes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@sweeneyde@arhadthedev@markshannon@serhiy-storchaka@bedevere-bot@ZeroIntensity