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:
committed by
Jesse Yurkovich
parent
4e4fc8c276
commit
fa987dc059
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user