diff options
author | Joe Shaw <joe@ximian.com> | 2002-11-04 15:24:28 +0000 |
---|---|---|
committer | Joe Shaw <joeshaw@src.gnome.org> | 2002-11-04 15:24:28 +0000 |
commit | 4ba8a7b7fa9fc4f1f6bf14a8923a7896e35a1b0a (patch) | |
tree | df8749608ad9bda4f013efd0244adac0becf59ec /gtk/pygtkcellrenderer.c | |
parent | 6e92a6955959307d550078f59fb8e2a76c361519 (diff) | |
download | pygtk-4ba8a7b7fa9fc4f1f6bf14a8923a7896e35a1b0a.tar.gz |
Prevent NULL dereference by passing in local variables to PyArg_ParseTuple
2002-11-04 Joe Shaw <joe@ximian.com>
* gtk/pygtkcellrenderer.c (pygtk_generic_cell_renderer_get_size):
Prevent NULL dereference by passing in local variables to
PyArg_ParseTuple instead of our function arguments.
Diffstat (limited to 'gtk/pygtkcellrenderer.c')
-rw-r--r-- | gtk/pygtkcellrenderer.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gtk/pygtkcellrenderer.c b/gtk/pygtkcellrenderer.c index 64d9f3a3..d19f2d59 100644 --- a/gtk/pygtkcellrenderer.c +++ b/gtk/pygtkcellrenderer.c @@ -94,6 +94,7 @@ pygtk_generic_cell_renderer_get_size (GtkCellRenderer *cell, gint *height) { PyObject *self, *py_ret, *py_widget, *py_cell_area; + gint my_x, my_y, my_width, my_height; g_return_if_fail(PYGTK_IS_GENERIC_CELL_RENDERER (cell)); @@ -117,14 +118,27 @@ pygtk_generic_cell_renderer_get_size (GtkCellRenderer *cell, Py_DECREF(py_widget); Py_DECREF(py_cell_area); - if (!PyArg_ParseTuple(py_ret, "iiii", x_offset, y_offset, width, height)) { + if (!PyArg_ParseTuple(py_ret, "iiii", + &my_x, &my_y, &my_width, &my_height)) { PyErr_Clear(); Py_DECREF(py_ret); g_warning("could not parse return value of get_size() method. " "Should be of form (x_offset, y_offset, width, height)"); return; } + /* success */ + if (x_offset) + *x_offset = my_x; + + if (y_offset) + *y_offset = my_y; + + if (width) + *width = my_width; + + if (height) + *height = my_height; } static void |