summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-01-22 22:05:01 +0000
committerGustavo J. A. M. Carneiro <gjc@src.gnome.org>2005-01-22 22:05:01 +0000
commit6b69cf6f118e43d721ea184ebfc3241c15330384 (patch)
tree0799f905b5796bb2d88d43ab3acbc3ae569b0060
parentf48c4d0b23402957c8cf9230cc766098ac4e7b1b (diff)
downloadpygtk-6b69cf6f118e43d721ea184ebfc3241c15330384.tar.gz
Bug 163209: abort on 'import gtk' when messing with sys.argv
-rw-r--r--ChangeLog3
-rw-r--r--gtk/gtkmodule.c12
2 files changed, 15 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 2613b443..a69b0e74 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2005-01-22 Gustavo J. A. M. Carneiro <gjc@gnome.org>
+ * gtk/gtkmodule.c (init_gtk): Do some type checking on sys.argv
+ before using it. Fixes #163209.
+
* gtk/gdk.override: Override slots tp_getattro and tp_setattro of
GdkGC instead of tp_setattr and tp_getattr. Fixes #159468.
diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c
index 2209b42d..68ed0a9e 100644
--- a/gtk/gtkmodule.c
+++ b/gtk/gtkmodule.c
@@ -132,8 +132,20 @@ init_gtk(void)
/* initialise GTK ... */
av = PySys_GetObject("argv");
+ if (!PyList_Check(av)) {
+ PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings");
+ av = NULL;
+ }
if (av != NULL) {
argc = PyList_Size(av);
+ for (i = 0; i < argc; i++)
+ if (!PyString_Check(PyList_GetItem(av, i))) {
+ PyErr_Warn(PyExc_Warning, "ignoring sys.argv: it must be a list of strings");
+ av = NULL;
+ break;
+ }
+ }
+ if (av != NULL) {
argv = g_new(char *, argc);
for (i = 0; i < argc; i++)
argv[i] = g_strdup(PyString_AsString(PyList_GetItem(av, i)));