summaryrefslogtreecommitdiff
path: root/gtk/pygtkcellrenderer.c
diff options
context:
space:
mode:
authorJoe Shaw <joe@ximian.com>2002-11-04 15:24:28 +0000
committerJoe Shaw <joeshaw@src.gnome.org>2002-11-04 15:24:28 +0000
commit4ba8a7b7fa9fc4f1f6bf14a8923a7896e35a1b0a (patch)
treedf8749608ad9bda4f013efd0244adac0becf59ec /gtk/pygtkcellrenderer.c
parent6e92a6955959307d550078f59fb8e2a76c361519 (diff)
downloadpygtk-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.c16
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