diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2024-03-20 13:39:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-20 13:39:53 (GMT) |
commit | 519b2ae22b54760475bbf62b9558d453c703f9c6 (patch) | |
tree | 321cae36795eabe4bad66ca58a1f804c956e38d2 /Modules/_testlimitedcapi | |
parent | 8182319de33a9519a2f243ac8c35a20ef82a4d2d (diff) | |
download | cpython-519b2ae22b54760475bbf62b9558d453c703f9c6.zip cpython-519b2ae22b54760475bbf62b9558d453c703f9c6.tar.gz cpython-519b2ae22b54760475bbf62b9558d453c703f9c6.tar.bz2 |
gh-117021: Fix integer overflow in PyLong_AsPid() on non-Windows 64-bit platforms (GH-117064)
Diffstat (limited to 'Modules/_testlimitedcapi')
-rw-r--r-- | Modules/_testlimitedcapi/long.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/Modules/_testlimitedcapi/long.c b/Modules/_testlimitedcapi/long.c index 16d41b1..5953009 100644 --- a/Modules/_testlimitedcapi/long.c +++ b/Modules/_testlimitedcapi/long.c @@ -746,6 +746,17 @@ pylong_asvoidptr(PyObject *module, PyObject *arg) return Py_NewRef((PyObject *)value); } +static PyObject * +pylong_aspid(PyObject *module, PyObject *arg) +{ + NULLABLE(arg); + pid_t value = PyLong_AsPid(arg); + if (value == -1 && PyErr_Occurred()) { + return NULL; + } + return PyLong_FromPid(value); +} + static PyMethodDef test_methods[] = { _TESTLIMITEDCAPI_TEST_LONG_AND_OVERFLOW_METHODDEF @@ -773,6 +784,7 @@ static PyMethodDef test_methods[] = { {"pylong_as_size_t", pylong_as_size_t, METH_O}, {"pylong_asdouble", pylong_asdouble, METH_O}, {"pylong_asvoidptr", pylong_asvoidptr, METH_O}, + {"pylong_aspid", pylong_aspid, METH_O}, {NULL}, }; |