-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
GH-93964: Harden overflow checks before _PyBytes_Resize in compile.c #94044
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Python/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) { |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
.
Is the PR still relevant or some other PR superseded this one? For merge conflict resolution: touched functions were moved to cc @iritkatriel |
#93964
The issue was found in 3.10, so it will need to be manually backported there.