perf python: Validate CPU and thread maps in pyrf_evsel__open

Add explicit Py_TYPE checks to ensure the arguments passed are
actually of the correct pyrf_thread_map and pyrf_cpu_map types.

Fixes: 877108e42b ("perf tools: Initial python binding")
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Ian Rogers
2026-08-09 00:14:47 -07:00
committed by Namhyung Kim
parent 612aca22a9
commit 9a142beb1e

View File

@@ -2113,11 +2113,21 @@ static PyObject *pyrf_evsel__open(struct pyrf_evsel *pevsel,
&pcpus, &pthreads, &group, &inherit))
return NULL;
if (pthreads != NULL && pthreads != Py_None)
if (pthreads != NULL && pthreads != Py_None) {
if (!PyObject_TypeCheck(pthreads, &pyrf_thread_map__type)) {
PyErr_SetString(PyExc_TypeError, "threads must be a thread_map");
return NULL;
}
threads = ((struct pyrf_thread_map *)pthreads)->threads;
}
if (pcpus != NULL && pcpus != Py_None)
if (pcpus != NULL && pcpus != Py_None) {
if (!PyObject_TypeCheck(pcpus, &pyrf_cpu_map__type)) {
PyErr_SetString(PyExc_TypeError, "cpus must be a cpu_map");
return NULL;
}
cpus = ((struct pyrf_cpu_map *)pcpus)->cpus;
}
evsel->core.attr.inherit = inherit;
/*