From 189a7111324b5076d2414a83d237f41156d95e2f Mon Sep 17 00:00:00 2001 From: Alan Fitton Date: Mon, 13 Aug 2012 07:23:52 +0100 Subject: fix a possible and rare NULL ptr dereference in an abrt crash report I got, run GTK init before converting command line arguments to hopefully avoid GTK/glib debugging flags being passed as torrent filenames. --- src/main.c | 6 +++++- src/trg-gtk-app.c | 10 ++++++++-- src/trg-main-window.c | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index 3ef3709..2558e1b 100644 --- a/src/main.c +++ b/src/main.c @@ -262,7 +262,7 @@ static gchar **convert_args(int argc, char *argv[]) int main(int argc, char *argv[]) { #if WIN32 || !GTK_CHECK_VERSION( 3, 0, 0 ) - gchar **args = convert_args(argc, argv); + gchar **args; #endif gint exitCode = EXIT_SUCCESS; TrgClient *client; @@ -271,6 +271,10 @@ int main(int argc, char *argv[]) g_thread_init(NULL); gtk_init(&argc, &argv); +#if WIN32 || !GTK_CHECK_VERSION( 3, 0, 0 ) + args = convert_args(argc, argv); +#endif + curl_global_init(CURL_GLOBAL_ALL); client = trg_client_new(); diff --git a/src/trg-gtk-app.c b/src/trg-gtk-app.c index afc07be..e0ddcf2 100644 --- a/src/trg-gtk-app.c +++ b/src/trg-gtk-app.c @@ -99,8 +99,14 @@ trg_gtk_app_command_line(GApplication * application, { GList *windows = gtk_application_get_windows(GTK_APPLICATION(application)); - TrgMainWindow *window = TRG_MAIN_WINDOW(windows->data); - gchar **argv = g_application_command_line_get_arguments(cmdline, NULL); + TrgMainWindow *window; + gchar **argv; + + if (!windows || !windows->data) + return 1; + + window = TRG_MAIN_WINDOW(windows->data); + argv = g_application_command_line_get_arguments(cmdline, NULL); if (g_application_command_line_get_is_remote(cmdline)) { if (!argv[0]) { diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 3020b3d..3691828 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -306,7 +306,7 @@ update_selected_torrent_notebook(TrgMainWindow * win, gint mode, gint64 id) trg_peers_model_update(priv->peersModel, TRG_TREE_VIEW(priv->peersTreeView), trg_client_get_serial(client), t, mode); - } else if (id < 0) { + } else { trg_main_window_torrent_scrub(win); } -- cgit v1.2.3