summaryrefslogtreecommitdiffstats
path: root/Modules/_testlimitedcapi
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2024-03-20 13:39:53 (GMT)
committerGitHub <noreply@github.com>2024-03-20 13:39:53 (GMT)
commit519b2ae22b54760475bbf62b9558d453c703f9c6 (patch)
tree321cae36795eabe4bad66ca58a1f804c956e38d2 /Modules/_testlimitedcapi
parent8182319de33a9519a2f243ac8c35a20ef82a4d2d (diff)
downloadcpython-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.c12
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},
};