diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2023-05-23 22:34:50 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-23 22:34:50 (GMT) |
commit | 22c45c49bbdc480ce221fc11ddf488b41c0d9c60 (patch) | |
tree | c46901099348f25022ad88973bb1e518fa7bc9a4 /Modules | |
parent | 5c8418c5cc6737cd40df448eff80d2297f68e1a5 (diff) | |
download | cpython-22c45c49bbdc480ce221fc11ddf488b41c0d9c60.zip cpython-22c45c49bbdc480ce221fc11ddf488b41c0d9c60.tar.gz cpython-22c45c49bbdc480ce221fc11ddf488b41c0d9c60.tar.bz2 |
[3.12] gh-103295: fix stack overwrite on 32-bit in perf map test harness (GH-104811) (#104823)
gh-103295: fix stack overwrite on 32-bit in perf map test harness (GH-104811)
(cherry picked from commit e0b3078705b271ff278dfbc788c2b061c92a9aa3)
Co-authored-by: Carl Meyer <carl@oddbird.net>
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/_testinternalcapi.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c index b91f7b6..8267dbf 100644 --- a/Modules/_testinternalcapi.c +++ b/Modules/_testinternalcapi.c @@ -762,19 +762,24 @@ clear_extension(PyObject *self, PyObject *args) static PyObject * write_perf_map_entry(PyObject *self, PyObject *args) { + PyObject *code_addr_v; const void *code_addr; unsigned int code_size; const char *entry_name; - if (!PyArg_ParseTuple(args, "KIs", &code_addr, &code_size, &entry_name)) + if (!PyArg_ParseTuple(args, "OIs", &code_addr_v, &code_size, &entry_name)) return NULL; + code_addr = PyLong_AsVoidPtr(code_addr_v); + if (code_addr == NULL) { + return NULL; + } int ret = PyUnstable_WritePerfMapEntry(code_addr, code_size, entry_name); - if (ret == -1) { - PyErr_SetString(PyExc_OSError, "Failed to write performance map entry"); + if (ret < 0) { + PyErr_SetFromErrno(PyExc_OSError); return NULL; } - return Py_BuildValue("i", ret); + return PyLong_FromLong(ret); } static PyObject * |