You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Deprecate accepting out of range values for unsigned integers in PyArg_Parse #132629
For unsigned integer formats (B, H, I, k, K) in PyArg_Parse, there is no overflow check. If the Python integer value is out of range of the corresponding C type, only the lowest bits are stored, and the higher bits are silently dropped. There are two reasons for this:
The signess of the C type accepted by the C API (like uid_t, etc) is not always known. We need to accept values that fit in corresponding both signed and unsigned C types.
Even if the type is unsigned, some small negative integers (casted to the unsigned tyep) can have special meaning. It is convenient if we can pass -1 instead of 0xffff_ffff or 0xffff_ffff_ffff_ffff, depending on platform.
But values that cannot be represented neither in unsigned not in signed C type, are obviously invalid. Silently accepting them can provoke bugs.
At first, I propose to emit a deprecation warning for such values. Later they will became errors.
Activity
pythongh-132629: Deprecate acception out of range values for unsigned…
gh-132629: Deprecate accepting out-of-range values for unsigned integ…
pythongh-132629: Deprecate accepting out-of-range values for unsigned…
pythongh-132629: Deprecate accepting out-of-range values for unsigned…
pythongh-132629: Deprecate accepting out-of-range values for unsigned…
StanFromIreland commentedon Sep 11, 2025
Deprecated in e18829a, is there anything left to do here?