-
-
Notifications
You must be signed in to change notification settings - Fork 33.4k
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.