Fix #110524: Use correct typed API to retrieve python GPU buffer sizes

Large GPU buffers can overflow their dimension property due to the use
of `PyLong_AsLong` instead of `PyLong_AsSsize_t` when processing the
buffer shape.

Pull Request: https://projects.blender.org/blender/blender/pulls/113566
This commit is contained in:
Jesse Yurkovich
2023-10-12 07:44:13 +02:00
committed by Jesse Yurkovich
parent 4e4fc8c276
commit fa987dc059

View File

@@ -64,7 +64,7 @@ static bool pygpu_buffer_pyobj_as_shape(PyObject *shape_obj,
Py_ssize_t shape_len = 0;
if (PyLong_Check(shape_obj)) {
shape_len = 1;
if ((r_shape[0] = PyLong_AsLong(shape_obj)) < 1) {
if ((r_shape[0] = PyLong_AsSsize_t(shape_obj)) < 1) {
PyErr_SetString(PyExc_AttributeError, "dimension must be greater than or equal to 1");
return false;
}
@@ -92,7 +92,7 @@ static bool pygpu_buffer_pyobj_as_shape(PyObject *shape_obj,
return false;
}
r_shape[i] = PyLong_AsLong(ob);
r_shape[i] = PyLong_AsSsize_t(ob);
Py_DECREF(ob);
if (r_shape[i] < 1) {