diff --git a/0001-abrt-gui-launch-reporter-children-with-LIBREPORT_GET.patch b/0001-abrt-gui-launch-reporter-children-with-LIBREPORT_GET.patch deleted file mode 100644 index 6205f10..0000000 --- a/0001-abrt-gui-launch-reporter-children-with-LIBREPORT_GET.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 1f52667a18026dba4050368e5d2501ec6145e071 Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko -Date: Thu, 21 Jul 2011 09:50:56 +0200 -Subject: [PATCH 1/4] abrt-gui: launch reporter children with LIBREPORT_GETPID - -By using LIBREPORT_NOWAIT | LIBREPORT_GETPID in abt-gui, -we make it so that reporter's SIGCHLD reaches abrt-gui -and lets it refresh the list. - -Signed-off-by: Denys Vlasenko ---- - src/gui-gtk/main.c | 5 ++--- - 1 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c -index b62e8c0..1409191 100644 ---- a/src/gui-gtk/main.c -+++ b/src/gui-gtk/main.c -@@ -204,7 +204,7 @@ static void on_row_activated_cb(GtkTreeView *treeview, GtkTreePath *path, GtkTre - gtk_tree_model_get_value(store, &iter, COLUMN_DUMP_DIR, &d_dir); - - const char *dirname = g_value_get_string(&d_dir); -- report_problem_in_dir(dirname, LIBREPORT_ANALYZE | LIBREPORT_NOWAIT); -+ report_problem_in_dir(dirname, LIBREPORT_ANALYZE | LIBREPORT_NOWAIT | LIBREPORT_GETPID); - } - } - } -@@ -293,8 +293,7 @@ static void on_button_send_cb(GtkWidget *button, gpointer data) - /* why it doesn't want to hide before report ends? */ - gtk_widget_destroy(s_report_window); - -- int status = report_problem_in_memory(pd, LIBREPORT_NOWAIT); -- VERB1 log("Reporting finished with status %i", status); -+ report_problem_in_memory(pd, LIBREPORT_NOWAIT | LIBREPORT_GETPID); - free_problem_data(pd); - } - --- -1.7.6 - diff --git a/0001-rhbz-724838-don-t-file-kernel-bugs-if-tainted-B-is-s.patch b/0001-rhbz-724838-don-t-file-kernel-bugs-if-tainted-B-is-s.patch deleted file mode 100644 index e4198ef..0000000 --- a/0001-rhbz-724838-don-t-file-kernel-bugs-if-tainted-B-is-s.patch +++ /dev/null @@ -1,192 +0,0 @@ -From 82b27dca87ef5a4f1cbb29377524bbdee26b1d64 Mon Sep 17 00:00:00 2001 -Message-Id: <82b27dca87ef5a4f1cbb29377524bbdee26b1d64.1317979766.git.npajkovs@redhat.com> -From: Nikola Pajkovsky -Date: Wed, 5 Oct 2011 15:13:23 +0200 -Subject: [PATCH 1/2] rhbz#724838 - don't file kernel bugs if "tainted: B" is - set - -Kernel maintainers are not much happy that we filling bugs when kernel -is tainted. - -Dave Jones said ---- -If something has corrupted memory, we typically see a whole bunch of things -start crashing. This leads to situations where abrt files a lot of bugs, even -though most of them are just fallout from the first. - -an example: bugs 710925 710930 710932 710933 710935 710942 710948 710955 710956 -are all the same crash. The traces and addresses are different, but 'something -scribbled over memory' is the root cause here. Sadly out of all those bugs, we -actually somehow missed the first crash which is the most relevant one. (That -one would have not had the 'Tainted: G B' text) ---- - -First part of the patch is that we won't relay on /proc/sys/kernel/tainted and -we will parse the kernel bt manually, because of reading that file after an oops -is ALWAYS going to show it as tainted. - -Second part of the patch is that whenever you want to prohibit reporting, put a -file with name *not-reportable* into . That file could be empty or with -reasonable message why are you trying to prohibit reporting. - -All 3 reporters plugins will be respect that file and it won't try to report anything. -Reporters will show only the messages from *not-reportable* and *reason*. - -Signed-off-by: Nikola Pajkovsky ---- - src/gui-gtk/main.c | 16 ++++++++-- - src/plugins/abrt-dump-oops.c | 65 +++++++++++++++++++++++------------------ - 2 files changed, 49 insertions(+), 32 deletions(-) - -diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c -index 8172951..d11bf57 100644 ---- a/src/gui-gtk/main.c -+++ b/src/gui-gtk/main.c -@@ -100,7 +100,14 @@ static void add_directory_to_dirlist(const char *dirname) - } - free(time_str); - -- char *reason = dd_load_text(dd, FILENAME_REASON); -+ -+ char *not_reportable_reason = dd_load_text_ext(dd, FILENAME_NOT_REPORTABLE, 0 -+ | DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE -+ | DD_FAIL_QUIETLY_ENOENT -+ | DD_FAIL_QUIETLY_EACCES); -+ char *reason = NULL; -+ if (!not_reportable_reason) -+ reason = dd_load_text(dd, FILENAME_REASON); - - /* the source of the problem: - * - first we try to load component, as we use it on Fedora -@@ -142,7 +149,7 @@ static void add_directory_to_dirlist(const char *dirname) - gtk_list_store_append(list_store, &iter); - gtk_list_store_set(list_store, &iter, - COLUMN_SOURCE, source, -- COLUMN_REASON, reason, -+ COLUMN_REASON, not_reportable_reason? :reason, - //OPTION: time format - COLUMN_LATEST_CRASH_STR, time_buf, - COLUMN_LATEST_CRASH, t, -@@ -150,6 +157,7 @@ static void add_directory_to_dirlist(const char *dirname) - COLUMN_REPORTED_TO, msg ? subm_status : NULL, - -1); - /* this is safe, subm_status is either null or malloced string from get_last_line */ -+ free(not_reportable_reason); - free(subm_status); - free(msg); - free(reason); -@@ -243,7 +251,9 @@ static void on_row_activated_cb(GtkTreeView *treeview, GtkTreePath *path, GtkTre - gtk_tree_model_get_value(store, &iter, COLUMN_DUMP_DIR, &d_dir); - - const char *dirname = g_value_get_string(&d_dir); -- report_problem_in_dir(dirname, LIBREPORT_ANALYZE | LIBREPORT_NOWAIT | LIBREPORT_GETPID); -+ -+ report_problem_in_dir(dirname, -+ LIBREPORT_ANALYZE | LIBREPORT_NOWAIT | LIBREPORT_GETPID); - } - } - } -diff --git a/src/plugins/abrt-dump-oops.c b/src/plugins/abrt-dump-oops.c -index 76c699d..58af506 100644 ---- a/src/plugins/abrt-dump-oops.c -+++ b/src/plugins/abrt-dump-oops.c -@@ -480,16 +480,6 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt) - - VERB1 log("Saving %u oopses as dump dirs", idx >= countdown ? countdown-1 : idx); - -- char *tainted_str = NULL; -- FILE *tainted_fp = fopen("/proc/sys/kernel/tainted", "r"); -- if (tainted_fp) -- { -- tainted_str = xmalloc_fgetline(tainted_fp); -- fclose(tainted_fp); -- } -- else -- perror_msg("Can't open '%s'", "/proc/sys/kernel/tainted"); -- - char *cmdline_str = NULL; - FILE *cmdline_fp = fopen("/proc/cmdline", "r"); - if (cmdline_fp) -@@ -536,35 +526,44 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt) - if (cmdline_str) - dd_save_text(dd, FILENAME_CMDLINE, cmdline_str); - dd_save_text(dd, FILENAME_BACKTRACE, second_line); --// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON? --// kernel oops 1st line may look quite puzzling otherwise... -- strchrnul(second_line, '\n')[0] = '\0'; -- dd_save_text(dd, FILENAME_REASON, second_line); - -- if (tainted_str && tainted_str[0] != '0') -+ char *tainted_short = kernel_tainted_short(second_line); -+ if (tainted_short) - { -- unsigned long tainted = xatoi_positive(tainted_str); -- char *tainted_short = kernel_tainted_short(tainted); -- GList *tainted_long = kernel_tainted_long(tainted); -- -- struct strbuf *tnt_long = strbuf_new(); -- for (GList *li = tainted_long; li; li = li->next) -- strbuf_append_strf(tnt_long, "%s\n", (char*) li->data); -- -- dd_save_text(dd, FILENAME_TAINTED, tainted_str); -+ VERB1 log("Kernel is tainted '%s'", tainted_short); - dd_save_text(dd, FILENAME_TAINTED_SHORT, tainted_short); -- dd_save_text(dd, FILENAME_TAINTED_LONG, tnt_long->buf); -- strbuf_free(tnt_long); -- list_free_with_free(tainted_long); -+ char *reason = xasprintf("Your kernel is tainted by flags '%s'. " -+ "Kernel maintainers are not interesting about " -+ "tainted kernel, because the trace might not be showing " -+ "the root problem." -+ , tainted_short); -+ dd_save_text(dd, FILENAME_NOT_REPORTABLE, reason); -+ free(reason); - } -+// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON? -+// kernel oops 1st line may look quite puzzling otherwise... -+ strchrnul(second_line, '\n')[0] = '\0'; -+ dd_save_text(dd, FILENAME_REASON, second_line); - -+/* -+ GList *tainted_long = kernel_tainted_long(tainted); -+ -+ struct strbuf *tnt_long = strbuf_new(); -+ for (GList *li = tainted_long; li; li = li->next) -+ strbuf_append_strf(tnt_long, "%s\n", (char*) li->data); -+ -+ dd_save_text(dd, FILENAME_TAINTED, tainted_str); -+ dd_save_text(dd, FILENAME_TAINTED_SHORT, tainted_short); -+ dd_save_text(dd, FILENAME_TAINTED_LONG, tnt_long->buf); -+ strbuf_free(tnt_long); -+ list_free_with_free(tainted_long); -+*/ - dd_close(dd); - } - else - errors++; - } - -- free(tainted_str); - free(cmdline_str); - - return errors; -@@ -718,7 +717,15 @@ int main(int argc, char **argv) - { - int i = 0; - while (i < oops_cnt) -- printf("\nVersion: %s", (char*)g_list_nth_data(oops_list, i++)); -+ { -+ char *kernel_bt = (char*)g_list_nth_data(oops_list, i++); -+ char *tainted_short = kernel_tainted_short(kernel_bt); -+ if (tainted_short) -+ log("Kernel is tainted '%s'", tainted_short); -+ -+ free(tainted_short); -+ printf("\nVersion: %s", kernel_bt); -+ } - } - if ((opts & OPT_d) || (opts & OPT_D)) - { --- -1.7.7.rc0.70.g82660 - diff --git a/0002-disabled-reporting-to-kerneloops.org.patch b/0002-disabled-reporting-to-kerneloops.org.patch new file mode 100644 index 0000000..3c46ec8 --- /dev/null +++ b/0002-disabled-reporting-to-kerneloops.org.patch @@ -0,0 +1,27 @@ +From 3e39d5b9944536a6f4d4f266b3c4961ad8da443e Mon Sep 17 00:00:00 2001 +From: Jiri +Date: Wed, 7 Dec 2011 10:34:27 +0100 +Subject: [PATCH 2/2] disabled reporting to kerneloops.org + +- we get lot of complains about dead kerneloops.org and since it's + not wihtin our power to fix it -> disable it! +--- + src/plugins/koops_event.conf | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/src/plugins/koops_event.conf b/src/plugins/koops_event.conf +index 3b80a1b..2fdccda 100644 +--- a/src/plugins/koops_event.conf ++++ b/src/plugins/koops_event.conf +@@ -10,7 +10,7 @@ EVENT=post-create analyzer=Kerneloops + reporter-kerneloops + + # report +-EVENT=report_Kerneloops analyzer=Kerneloops ++#EVENT=report_Kerneloops analyzer=Kerneloops + reporter-kerneloops + + EVENT=report_Bugzilla analyzer=Kerneloops +-- +1.7.7.3 + diff --git a/0002-gtk3-build-fixes.patch b/0002-gtk3-build-fixes.patch deleted file mode 100644 index 47682f2..0000000 --- a/0002-gtk3-build-fixes.patch +++ /dev/null @@ -1,79 +0,0 @@ -From af62f5f9fc31a8b24a56983d37cad2d29380ff20 Mon Sep 17 00:00:00 2001 -From: Jiri Moskovcak -Date: Fri, 4 Nov 2011 15:28:15 +0100 -Subject: [PATCH 2/2] gtk3 build fixes - ---- - configure.ac | 7 ++++++- - src/applet/applet.c | 4 ++-- - src/gui-gtk/main.c | 7 ++++++- - 3 files changed, 14 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 6b0732c..d584047 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -20,6 +20,11 @@ AC_ARG_ENABLE(debug, - [Enable debug information])], - [CFLAGS="$CFLAGS -DDEBUG -ggdb -g"]) - -+AC_ARG_ENABLE(gtk3, -+ [AC_HELP_STRING([--enable-gtk3], -+ [Use gtk3 instead of gtk2])], -+ [GTK_VER="gtk+-3.0"],[GTK_VER="gtk+-2.0"]) -+ - dnl ****** INTERNATIONALIZATION ********************** - GETTEXT_PACKAGE=abrt - AC_SUBST(GETTEXT_PACKAGE) -@@ -56,7 +61,7 @@ AC_PATH_PROG([XMLTO], [xmlto], [no]) - [exit 1] - [fi] - --PKG_CHECK_MODULES([GTK], [gtk+-2.0]) -+PKG_CHECK_MODULES([GTK], [$GTK_VER]) - PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21]) - PKG_CHECK_MODULES([DBUS], [dbus-1]) - PKG_CHECK_MODULES([LIBXML], [libxml-2.0]) -diff --git a/src/applet/applet.c b/src/applet/applet.c -index 4ff73b6..95b7091 100644 ---- a/src/applet/applet.c -+++ b/src/applet/applet.c -@@ -581,8 +581,8 @@ static void init_applet(void) - ap_status_icon = gtk_status_icon_new_from_icon_name("abrt"); - } - hide_icon(); -- g_signal_connect(G_OBJECT(ap_status_icon), "activate", GTK_SIGNAL_FUNC(on_applet_activate_cb), NULL); -- g_signal_connect(G_OBJECT(ap_status_icon), "popup_menu", GTK_SIGNAL_FUNC(on_menu_popup_cb), NULL); -+ g_signal_connect(G_OBJECT(ap_status_icon), "activate", G_CALLBACK(on_applet_activate_cb), NULL); -+ g_signal_connect(G_OBJECT(ap_status_icon), "popup_menu", G_CALLBACK(on_menu_popup_cb), NULL); - ap_menu = create_menu(); - } - -diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c -index a8aacec..b31509b 100644 ---- a/src/gui-gtk/main.c -+++ b/src/gui-gtk/main.c -@@ -25,6 +25,11 @@ - #include - #include "libabrt.h" - -+#if GTK_MAJOR_VERSION == 2 && GTK_MINOR_VERSION < 22 -+# define GDK_KEY_Delete GDK_Delete -+# define GDK_KEY_KP_Delete GDK_KP_Delete -+#endif -+ - static void scan_dirs_and_add_to_dirlist(void); - - -@@ -460,7 +465,7 @@ static gint on_key_press_event_cb(GtkTreeView *treeview, GdkEventKey *key, gpoin - { - int k = key->keyval; - -- if (k == GDK_Delete || k == GDK_KP_Delete) -+ if (k == GDK_KEY_Delete || k == GDK_KEY_KP_Delete) - { - delete_report(treeview); - return TRUE; --- -1.7.7 - diff --git a/0002-gui-split-the-main-window-in-2-panes-reported-not-re.patch b/0002-gui-split-the-main-window-in-2-panes-reported-not-re.patch deleted file mode 100644 index dd973e2..0000000 --- a/0002-gui-split-the-main-window-in-2-panes-reported-not-re.patch +++ /dev/null @@ -1,354 +0,0 @@ -From 3f3655980007d39e0377e76a49fd2937f43f0be7 Mon Sep 17 00:00:00 2001 -From: Jiri Moskovcak -Date: Thu, 21 Jul 2011 11:02:11 +0200 -Subject: [PATCH 2/4] gui: split the main window in 2 panes - - reported/not-reported - ---- - src/gui-gtk/main.c | 215 ++++++++++++++++++++++++++++++++++++++++++++-------- - 1 files changed, 182 insertions(+), 33 deletions(-) - -diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c -index 1409191..776e85a 100644 ---- a/src/gui-gtk/main.c -+++ b/src/gui-gtk/main.c -@@ -32,7 +32,9 @@ static const char help_uri[] = "http://docs.fedoraproject.org/en-US/" - "Fedora/14/html/Deployment_Guide/ch-abrt.html"; - - static GtkListStore *s_dumps_list_store; -+static GtkListStore *s_reported_dumps_list_store; - static GtkWidget *s_treeview; -+static GtkWidget *s_reported_treeview; - static GtkWidget *g_main_window; - static GtkWidget *s_report_window; - -@@ -40,13 +42,38 @@ enum - { - COLUMN_SOURCE, - COLUMN_REASON, -- COLUMN_DIRNAME, - COLUMN_LATEST_CRASH_STR, - COLUMN_LATEST_CRASH, - COLUMN_DUMP_DIR, -+ COLUMN_REPORTED_TO, - NUM_COLUMNS - }; - -+//FIXME: maybe we can use strrchr and make this faster... -+static char *get_last_line(const char* msg) -+{ -+ const char *curr_end = NULL; -+ const char *start = msg; -+ const char *end = msg; -+ -+ while((curr_end = strchr(end, '\n')) != NULL) -+ { -+ end = curr_end; -+ curr_end = strchr(end+1, '\n'); -+ if (curr_end == NULL || strchr(end+2, '\n') == NULL) -+ break; -+ -+ start = end+1; -+ end = curr_end; -+ } -+ -+ //fix the case where reported_to has only 1 line without \n -+ if (end == msg) -+ end = end + strlen(msg); -+ -+ return xstrndup(start, end - start); -+} -+ - static void add_directory_to_dirlist(const char *dirname) - { - /* Silently ignore *any* errors, not only EACCES. -@@ -67,21 +94,11 @@ static void add_directory_to_dirlist(const char *dirname) - { - time_t t = strtol(time_str, NULL, 10); /* atoi won't work past 2038! */ - struct tm *ptm = localtime(&t); -- size_t time_len = strftime(time_buf, sizeof(time_buf)-1, "%Y-%m-%m %H:%M", ptm); -+ size_t time_len = strftime(time_buf, sizeof(time_buf)-1, "%Y-%m-%d %H:%M", ptm); - time_buf[time_len] = '\0'; - } - free(time_str); - -- /* -- char *msg = dd_load_text_ext(dd, FILENAME_REPORTED_TO, 0 -- | DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE -- | DD_FAIL_QUIETLY_ENOENT -- | DD_FAIL_QUIETLY_EACCES -- ); -- const char *reported = (msg ? GTK_STOCK_YES : GTK_STOCK_NO); -- free(msg); -- */ -- - char *reason = dd_load_text(dd, FILENAME_REASON); - - /* the source of the problem: -@@ -102,18 +119,38 @@ static void add_directory_to_dirlist(const char *dirname) - ); - } - -+ char *msg = dd_load_text_ext(dd, FILENAME_REPORTED_TO, 0 -+ | DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE -+ | DD_FAIL_QUIETLY_ENOENT -+ | DD_FAIL_QUIETLY_EACCES -+ ); -+ -+ -+ GtkListStore *list_store; -+ -+ char *subm_status = NULL; -+ if (msg) -+ { -+ list_store = s_reported_dumps_list_store; -+ subm_status = get_last_line(msg); -+ } -+ else -+ list_store = s_dumps_list_store; - - GtkTreeIter iter; -- gtk_list_store_append(s_dumps_list_store, &iter); -- gtk_list_store_set(s_dumps_list_store, &iter, -+ gtk_list_store_append(list_store, &iter); -+ gtk_list_store_set(list_store, &iter, - COLUMN_SOURCE, source, - COLUMN_REASON, reason, -- COLUMN_DIRNAME, dd->dd_dirname, - //OPTION: time format - COLUMN_LATEST_CRASH_STR, time_buf, - COLUMN_LATEST_CRASH, time, - COLUMN_DUMP_DIR, dirname, -+ COLUMN_REPORTED_TO, msg ? subm_status : NULL, - -1); -+ /* this is safe, subm_status is either null or malloced string from get_last_line */ -+ free(subm_status); -+ free(msg); - free(reason); - - dd_close(dd); -@@ -123,6 +160,7 @@ static void add_directory_to_dirlist(const char *dirname) - static void rescan_dirs_and_add_to_dirlist(void) - { - gtk_list_store_clear(s_dumps_list_store); -+ gtk_list_store_clear(s_reported_dumps_list_store); - scan_dirs_and_add_to_dirlist(); - } - -@@ -232,7 +270,7 @@ static void delete_report(GtkTreeView *treeview) - VERB1 log("Deleting '%s'", dump_dir_name); - if (delete_dump_dir_possibly_using_abrtd(dump_dir_name) == 0) - { -- gtk_list_store_remove(s_dumps_list_store, &iter); -+ gtk_list_store_remove(GTK_LIST_STORE(store), &iter); - } - else - { -@@ -262,7 +300,9 @@ static gint on_key_press_event_cb(GtkTreeView *treeview, GdkEventKey *key, gpoin - - static void on_btn_delete_cb(GtkButton *button, gpointer unused) - { -+ /* delete from both treeviews */ - delete_report(GTK_TREE_VIEW(s_treeview)); -+ delete_report(GTK_TREE_VIEW(s_reported_treeview)); - } - - static void on_menu_help_cb(GtkMenuItem *menuitem, gpointer unused) -@@ -421,6 +461,50 @@ static void add_columns(GtkTreeView *treeview) - gtk_tree_view_append_column(treeview, column); - } - -+static void add_columns_reported(GtkTreeView *treeview) -+{ -+ GtkCellRenderer *renderer; -+ GtkTreeViewColumn *column; -+ -+ renderer = gtk_cell_renderer_text_new(); -+ column = gtk_tree_view_column_new_with_attributes(_("Source"), -+ renderer, -+ "text", -+ COLUMN_SOURCE, -+ NULL); -+ gtk_tree_view_column_set_resizable(column, TRUE); -+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_SOURCE); -+ gtk_tree_view_append_column(treeview, column); -+ -+ renderer = gtk_cell_renderer_text_new(); -+ column = gtk_tree_view_column_new_with_attributes(_("Problem"), -+ renderer, -+ "text", -+ COLUMN_REASON, -+ NULL); -+ gtk_tree_view_column_set_resizable(column, TRUE); -+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_REASON); -+ gtk_tree_view_append_column(treeview, column); -+ -+ renderer = gtk_cell_renderer_text_new(); -+ column = gtk_tree_view_column_new_with_attributes(_("Date Submitted"), -+ renderer, -+ "text", -+ COLUMN_LATEST_CRASH_STR, -+ NULL); -+ gtk_tree_view_column_set_sort_column_id(column, COLUMN_LATEST_CRASH); -+ gtk_tree_view_append_column(treeview, column); -+ -+ renderer = gtk_cell_renderer_text_new(); -+ column = gtk_tree_view_column_new_with_attributes(_("Submision Result"), -+ renderer, -+ "text", -+ COLUMN_REPORTED_TO, -+ NULL); -+ //gtk_tree_view_column_set_sort_column_id(column, COLUMN_LATEST_CRASH); -+ gtk_tree_view_append_column(treeview, column); -+} -+ - static GtkWidget *create_menu(void) - { - /* main bar */ -@@ -476,40 +560,102 @@ static GtkWidget *create_main_window(void) - gtk_window_set_default_icon_name("abrt"); - - GtkWidget *main_vbox = gtk_vbox_new(false, 0); -+ /* add menu */ -+ gtk_box_pack_start(GTK_BOX(main_vbox), create_menu(), false, false, 0); - -- /* Scrolled region inside main window */ -- GtkWidget *scroll_win = gtk_scrolled_window_new(NULL, NULL); -- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll_win), -+ GtkWidget *not_subm_vbox = gtk_vbox_new(false, 0); -+ gtk_container_set_border_width(GTK_CONTAINER(not_subm_vbox), 10); -+ GtkWidget *subm_vbox = gtk_vbox_new(false, 0); -+ gtk_container_set_border_width(GTK_CONTAINER(subm_vbox), 10); -+ -+ /* Scrolled region for not reported problems inside main window*/ -+ GtkWidget *new_problems_scroll_win = gtk_scrolled_window_new(NULL, NULL); -+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(new_problems_scroll_win), - GTK_SHADOW_ETCHED_IN); -- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_win), -+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(new_problems_scroll_win), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - -- gtk_box_pack_start(GTK_BOX(main_vbox), create_menu(), false, false, 0); -- gtk_box_pack_start(GTK_BOX(main_vbox), scroll_win, true, true, 0); -- gtk_container_add(GTK_CONTAINER(g_main_window), main_vbox); -+ GtkWidget *not_subm_lbl = gtk_label_new(_("Not submitted reports")); -+ gtk_misc_set_alignment(GTK_MISC(not_subm_lbl), 0, 0); -+ gtk_label_set_markup(GTK_LABEL(not_subm_lbl), _("Not submitted reports")); -+ -+ /* add label for not submitted tree view */ -+ gtk_box_pack_start(GTK_BOX(not_subm_vbox), not_subm_lbl, false, false, 0); -+ gtk_box_pack_start(GTK_BOX(not_subm_vbox), new_problems_scroll_win, true, true, 0); -+ gtk_box_pack_start(GTK_BOX(main_vbox), not_subm_vbox, true, true, 0); - - /* Tree view inside scrolled region */ - s_treeview = gtk_tree_view_new(); - g_object_set(s_treeview, "rules-hint", 1, NULL); /* use alternating colors */ - add_columns(GTK_TREE_VIEW(s_treeview)); -- gtk_container_add(GTK_CONTAINER(scroll_win), s_treeview); -+ gtk_container_add(GTK_CONTAINER(new_problems_scroll_win), s_treeview); - - /* Create data store for the list and attach it */ -- s_dumps_list_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_STRING, /* source */ -+ s_dumps_list_store = gtk_list_store_new(NUM_COLUMNS, -+ G_TYPE_STRING, /* source */ -+ G_TYPE_STRING, /* executable */ -+ G_TYPE_STRING, /* time */ -+ G_TYPE_INT, /* unix time - used for sort */ -+ G_TYPE_STRING, /* dump dir path */ -+ G_TYPE_STRING); /* reported_to */ -+ -+ -+ //FIXME: configurable!! -+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(s_dumps_list_store), -+ COLUMN_LATEST_CRASH, -+ GTK_SORT_DESCENDING); -+ -+ gtk_tree_view_set_model(GTK_TREE_VIEW(s_treeview), GTK_TREE_MODEL(s_dumps_list_store)); -+ -+ /* Double click/Enter handler */ -+ g_signal_connect(s_treeview, "row-activated", G_CALLBACK(on_row_activated_cb), NULL); -+ /* Delete handler */ -+ g_signal_connect(s_treeview, "key-press-event", G_CALLBACK(on_key_press_event_cb), NULL); -+ -+ /* scrolled region for reported problems */ -+ GtkWidget *reported_problems_scroll_win = gtk_scrolled_window_new(NULL, NULL); -+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(reported_problems_scroll_win), -+ GTK_SHADOW_ETCHED_IN); -+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(reported_problems_scroll_win), -+ GTK_POLICY_AUTOMATIC, -+ GTK_POLICY_AUTOMATIC); -+ -+ GtkWidget *subm_lbl = gtk_label_new(_("Submitted reports")); -+ /* align to left */ -+ gtk_misc_set_alignment(GTK_MISC(subm_lbl), 0, 0); -+ gtk_label_set_markup(GTK_LABEL(subm_lbl), _("Submitted reports")); -+ -+ -+ /* add label for submitted tree view */ -+ gtk_box_pack_start(GTK_BOX(subm_vbox), subm_lbl, false, false, 0); -+ gtk_box_pack_start(GTK_BOX(subm_vbox), reported_problems_scroll_win, true, true, 0); -+ gtk_box_pack_start(GTK_BOX(main_vbox), subm_vbox, true, true, 0); -+ -+ /* Tree view inside scrolled region */ -+ s_reported_treeview = gtk_tree_view_new(); -+ g_object_set(s_reported_treeview, "rules-hint", 1, NULL); /* use alternating colors */ -+ add_columns_reported(GTK_TREE_VIEW(s_reported_treeview)); -+ gtk_container_add(GTK_CONTAINER(reported_problems_scroll_win), s_reported_treeview); -+ -+ /* Create data store for the list and attach it */ -+ s_reported_dumps_list_store = gtk_list_store_new(NUM_COLUMNS, -+ G_TYPE_STRING, /* source */ - G_TYPE_STRING, /* executable */ -- G_TYPE_STRING, /* hostname */ - G_TYPE_STRING, /* time */ - G_TYPE_INT, /* unix time - used for sort */ - G_TYPE_STRING, /* dump dir path */ -- G_TYPE_STRING);/* row background */ -+ G_TYPE_STRING); /* reported_to */ -+ - - //FIXME: configurable!! -- gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(s_dumps_list_store), -+ gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(s_reported_dumps_list_store), - COLUMN_LATEST_CRASH, - GTK_SORT_DESCENDING); - -- gtk_tree_view_set_model(GTK_TREE_VIEW(s_treeview), GTK_TREE_MODEL(s_dumps_list_store)); -+ -+ gtk_tree_view_set_model(GTK_TREE_VIEW(s_reported_treeview), GTK_TREE_MODEL(s_reported_dumps_list_store)); -+ - - /* buttons are homogenous so set size only for one button and it will - * work for the rest buttons in same gtk_hbox_new() */ -@@ -518,20 +664,23 @@ static GtkWidget *create_main_window(void) - - GtkWidget *btn_delete = gtk_button_new_from_stock(GTK_STOCK_DELETE); - -- GtkWidget *hbox_report_delete = gtk_hbox_new(true, 4); -+ GtkWidget *hbox_report_delete = gtk_hbox_new(true, 0); - gtk_box_pack_start(GTK_BOX(hbox_report_delete), btn_delete, true, true, 0); -- gtk_box_pack_start(GTK_BOX(hbox_report_delete), btn_report, true, true, 0); -+ gtk_box_pack_start(GTK_BOX(hbox_report_delete), btn_report, true, true, 10); - - GtkWidget *halign = gtk_alignment_new(1, 0, 0, 0); - gtk_container_add(GTK_CONTAINER(halign), hbox_report_delete); - - gtk_box_pack_start(GTK_BOX(main_vbox), halign, false, false, 10); - -+ /* put the main_vbox to main window */ -+ gtk_container_add(GTK_CONTAINER(g_main_window), main_vbox); -+ - /* Double click/Enter handler */ -- g_signal_connect(s_treeview, "row-activated", G_CALLBACK(on_row_activated_cb), NULL); -+ g_signal_connect(s_reported_treeview, "row-activated", G_CALLBACK(on_row_activated_cb), NULL); - g_signal_connect(btn_report, "clicked", G_CALLBACK(on_btn_report_cb), NULL); - /* Delete handler */ -- g_signal_connect(s_treeview, "key-press-event", G_CALLBACK(on_key_press_event_cb), NULL); -+ g_signal_connect(s_reported_treeview, "key-press-event", G_CALLBACK(on_key_press_event_cb), NULL); - g_signal_connect(btn_delete, "clicked", G_CALLBACK(on_btn_delete_cb), NULL); - /* Quit when user closes the main window */ - g_signal_connect(g_main_window, "destroy", gtk_main_quit, NULL); --- -1.7.6 - diff --git a/0002-rhbz-718097-don-t-file-bugs-about-BIOS-bugs.patch b/0002-rhbz-718097-don-t-file-bugs-about-BIOS-bugs.patch deleted file mode 100644 index ae62890..0000000 --- a/0002-rhbz-718097-don-t-file-bugs-about-BIOS-bugs.patch +++ /dev/null @@ -1,35 +0,0 @@ -From e965fb7a7c768889cdd4a59859d28dc83b3daf09 Mon Sep 17 00:00:00 2001 -Message-Id: -In-Reply-To: <82b27dca87ef5a4f1cbb29377524bbdee26b1d64.1317979766.git.npajkovs@redhat.com> -References: <82b27dca87ef5a4f1cbb29377524bbdee26b1d64.1317979766.git.npajkovs@redhat.com> -From: Nikola Pajkovsky -Date: Wed, 5 Oct 2011 17:23:22 +0200 -Subject: [PATCH 2/2] rhbz#718097 - don't file bugs about BIOS bugs - -Signed-off-by: Nikola Pajkovsky ---- - src/plugins/abrt-dump-oops.c | 7 ++++++- - 1 files changed, 6 insertions(+), 1 deletions(-) - -diff --git a/src/plugins/abrt-dump-oops.c b/src/plugins/abrt-dump-oops.c -index 58af506..3bfc617 100644 ---- a/src/plugins/abrt-dump-oops.c -+++ b/src/plugins/abrt-dump-oops.c -@@ -527,8 +527,13 @@ static unsigned save_oops_to_dump_dir(GList *oops_list, unsigned oops_cnt) - dd_save_text(dd, FILENAME_CMDLINE, cmdline_str); - dd_save_text(dd, FILENAME_BACKTRACE, second_line); - -+ /* check if trace doesn't have line: 'Your BIOS is broken' */ -+ char *broken_bios = strstr(second_line, "Your BIOS is broken"); -+ if (broken_bios) -+ dd_save_text(dd, FILENAME_NOT_REPORTABLE, "Your BIOS is broken"); -+ - char *tainted_short = kernel_tainted_short(second_line); -- if (tainted_short) -+ if (tainted_short && !broken_bios) - { - VERB1 log("Kernel is tainted '%s'", tainted_short); - dd_save_text(dd, FILENAME_TAINTED_SHORT, tainted_short); --- -1.7.7.rc0.70.g82660 - diff --git a/0003-glib-2.31-build-fixes.patch b/0003-glib-2.31-build-fixes.patch deleted file mode 100644 index 86f5ce4..0000000 --- a/0003-glib-2.31-build-fixes.patch +++ /dev/null @@ -1,72 +0,0 @@ -From ecfc461fd979aeb2d3ce4b9d811e4bf4a7730532 Mon Sep 17 00:00:00 2001 -From: Jiri Moskovcak -Date: Sat, 5 Nov 2011 18:04:54 +0100 -Subject: [PATCH 3/3] - glib 2.31 build fixes - ---- - src/applet/applet.c | 14 +++++++++++++- - src/gui-gtk/main.c | 4 ++-- - 2 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/src/applet/applet.c b/src/applet/applet.c -index 95b7091..bead61f 100644 ---- a/src/applet/applet.c -+++ b/src/applet/applet.c -@@ -766,10 +766,20 @@ int main(int argc, char** argv) - textdomain(PACKAGE); - #endif - -+ /* Glib 2.31: -+ * Major changes to threading and synchronisation -+ - threading is now always enabled in GLib -+ - support for custom thread implementations (including our own internal -+ - support for errorcheck mutexes) has been removed -+ */ -+#if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 31) -+ //can't use log(), because g_verbose is not set yet -+ g_print("abrt-applet: glib < 2.31 - init threading\n"); - /* Need to be thread safe */ - g_thread_init(NULL); - gdk_threads_init(); - gdk_threads_enter(); -+#endif - - gtk_init(&argc, &argv); - -@@ -869,8 +879,10 @@ int main(int argc, char** argv) - - /* Enter main loop */ - gtk_main(); -- -+#if (GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 31) - gdk_threads_leave(); -+#endif -+ - if (notify_is_initted()) - notify_uninit(); - -diff --git a/src/gui-gtk/main.c b/src/gui-gtk/main.c -index b31509b..a24745a 100644 ---- a/src/gui-gtk/main.c -+++ b/src/gui-gtk/main.c -@@ -912,7 +912,7 @@ static gboolean handle_signal_pipe(GIOChannel *gio, GIOCondition condition, gpoi - */ - gchar buf[16]; - gsize bytes_read; -- g_io_channel_read(gio, buf, sizeof(buf), &bytes_read); -+ g_io_channel_read_chars(gio, buf, sizeof(buf), &bytes_read, NULL); - - /* Destroy zombies */ - while (safe_waitpid(-1, NULL, WNOHANG) > 0) -@@ -975,7 +975,7 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin - /* We read inotify events, but don't analyze them */ - gchar buf[sizeof(struct inotify_event) + PATH_MAX + 64]; - gsize bytes_read; -- while (g_io_channel_read(gio, buf, sizeof(buf), &bytes_read) == G_IO_ERROR_NONE -+ while (g_io_channel_read_chars(gio, buf, sizeof(buf), &bytes_read, NULL) == G_IO_STATUS_NORMAL - && bytes_read > 0 - ) { - continue; --- -1.7.7 - diff --git a/0003-remove-forgotten-abrt-action-kerneloops-files.patch b/0003-remove-forgotten-abrt-action-kerneloops-files.patch deleted file mode 100644 index 84575e1..0000000 --- a/0003-remove-forgotten-abrt-action-kerneloops-files.patch +++ /dev/null @@ -1,268 +0,0 @@ -From 89de28a3510c6e7a30ca053caea35ccabfbde75a Mon Sep 17 00:00:00 2001 -From: Miroslav Lichvar -Date: Thu, 21 Jul 2011 15:34:50 +0200 -Subject: [PATCH 3/4] remove forgotten abrt-action-kerneloops files - ---- - src/plugins/abrt-action-kerneloops.c | 173 -------------------------------- - src/plugins/abrt-action-kerneloops.txt | 68 ------------- - 2 files changed, 0 insertions(+), 241 deletions(-) - delete mode 100644 src/plugins/abrt-action-kerneloops.c - delete mode 100644 src/plugins/abrt-action-kerneloops.txt - -diff --git a/src/plugins/abrt-action-kerneloops.c b/src/plugins/abrt-action-kerneloops.c -deleted file mode 100644 -index a117266..0000000 ---- a/src/plugins/abrt-action-kerneloops.c -+++ /dev/null -@@ -1,173 +0,0 @@ --/* -- Copyright (C) 2010 ABRT team -- Copyright (C) 2010 RedHat Inc -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- Authors: -- Anton Arapov -- Arjan van de Ven -- */ --#include --#include "abrtlib.h" -- --/* helpers */ --static size_t writefunction(void *ptr, size_t size, size_t nmemb, void *stream) --{ -- size *= nmemb; --/* -- char *c, *c1, *c2; -- -- log("received: '%*.*s'", (int)size, (int)size, (char*)ptr); -- c = (char*)xzalloc(size + 1); -- memcpy(c, ptr, size); -- c1 = strstr(c, "201 "); -- if (c1) -- { -- c1 += 4; -- c2 = strchr(c1, '\n'); -- if (c2) -- *c2 = 0; -- } -- free(c); --*/ -- -- return size; --} -- --/* Send oops data to kerneloops.org-style site, using HTTP POST */ --/* Returns 0 on success */ --static CURLcode http_post_to_kerneloops_site(const char *url, const char *oopsdata) --{ -- CURLcode ret; -- CURL *handle; -- struct curl_httppost *post = NULL; -- struct curl_httppost *last = NULL; -- -- handle = curl_easy_init(); -- if (!handle) -- error_msg_and_die("Can't create curl handle"); -- -- curl_easy_setopt(handle, CURLOPT_URL, url); -- -- curl_formadd(&post, &last, -- CURLFORM_COPYNAME, "oopsdata", -- CURLFORM_COPYCONTENTS, oopsdata, -- CURLFORM_END); -- curl_formadd(&post, &last, -- CURLFORM_COPYNAME, "pass_on_allowed", -- CURLFORM_COPYCONTENTS, "yes", -- CURLFORM_END); -- -- curl_easy_setopt(handle, CURLOPT_HTTPPOST, post); -- curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, writefunction); -- -- ret = curl_easy_perform(handle); -- -- curl_formfree(post); -- curl_easy_cleanup(handle); -- -- return ret; --} -- --static void report_to_kerneloops( -- const char *dump_dir_name, -- map_string_h *settings) --{ -- problem_data_t *problem_data = create_problem_data_for_reporting(dump_dir_name); -- if (!problem_data) -- xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */ -- -- const char *backtrace = get_problem_item_content_or_NULL(problem_data, FILENAME_BACKTRACE); -- if (!backtrace) -- error_msg_and_die("Error sending kernel oops due to missing backtrace"); -- -- const char *env = getenv("KerneloopsReporter_SubmitURL"); -- const char *submitURL = (env ? env : get_map_string_item_or_empty(settings, "SubmitURL")); -- if (!submitURL[0]) -- submitURL = "http://submit.kerneloops.org/submitoops.php"; -- -- log(_("Submitting oops report to %s"), submitURL); -- -- CURLcode ret = http_post_to_kerneloops_site(submitURL, backtrace); -- if (ret != CURLE_OK) -- error_msg_and_die("Kernel oops has not been sent due to %s", curl_easy_strerror(ret)); -- -- free_problem_data(problem_data); -- -- /* Server replies with: -- * 200 thank you for submitting the kernel oops information -- * RemoteIP: 34192fd15e34bf60fac6a5f01bba04ddbd3f0558 -- * - no URL or bug ID apparently... -- */ -- struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0); -- if (dd) -- { -- char *msg = xasprintf("kerneloops: URL=%s", submitURL); -- add_reported_to(dd, msg); -- free(msg); -- dd_close(dd); -- } -- -- log("Kernel oops report was uploaded"); --} -- --int main(int argc, char **argv) --{ -- abrt_init(argv); -- -- map_string_h *settings = new_map_string(); -- const char *dump_dir_name = "."; -- GList *conf_file = NULL; -- -- /* Can't keep these strings/structs static: _() doesn't support that */ -- const char *program_usage_string = _( -- "\b [-v] [-c CONFFILE]... -d DIR\n" -- "\n" -- "Reports kernel oops to kerneloops.org (or similar) site.\n" -- "\n" -- "Files with names listed in $EXCLUDE_FROM_REPORT are not included\n" -- "into the tarball.\n" -- "\n" -- "CONFFILE lines should have 'PARAM = VALUE' format.\n" -- "Recognized string parameter: SubmitURL.\n" -- "Parameter can be overridden via $KerneloopsReporter_SubmitURL." -- ); -- enum { -- OPT_v = 1 << 0, -- OPT_d = 1 << 1, -- OPT_c = 1 << 2, -- }; -- /* Keep enum above and order of options below in sync! */ -- struct options program_options[] = { -- OPT__VERBOSE(&g_verbose), -- OPT_STRING('d', NULL, &dump_dir_name, "DIR" , _("Dump directory")), -- OPT_LIST( 'c', NULL, &conf_file , "FILE", _("Configuration file")), -- OPT_END() -- }; -- /*unsigned opts =*/ parse_opts(argc, argv, program_options, program_usage_string); -- -- export_abrt_envvars(0); -- -- while (conf_file) -- { -- char *fn = (char *)conf_file->data; -- VERB1 log("Loading settings from '%s'", fn); -- load_conf_file(fn, settings, /*skip key w/o values:*/ true); -- VERB3 log("Loaded '%s'", fn); -- conf_file = g_list_remove(conf_file, fn); -- } -- -- report_to_kerneloops(dump_dir_name, settings); -- -- free_map_string(settings); -- return 0; --} -diff --git a/src/plugins/abrt-action-kerneloops.txt b/src/plugins/abrt-action-kerneloops.txt -deleted file mode 100644 -index 468287f..0000000 ---- a/src/plugins/abrt-action-kerneloops.txt -+++ /dev/null -@@ -1,68 +0,0 @@ --abrt-action-kerneloops(1) --========================= -- --NAME ------ --abrt-action-kerneloops - Reports kernel oops to kerneloops.org (or similar) --site. -- --SYNOPSIS ---------- --'abrt-action-kerneloops' [-v] [-c CONFFILE]... [ -d DIR ] -- --DESCRIPTION ------------- --The tool is used to report the crash to the Kerneloops tracker. -- --Configuration file --~~~~~~~~~~~~~~~~~~ --Configuration file contains entries in a format "Option = Value". -- --The options are: -- --'SubmitURL':: -- The URL of the kerneloops tracker, the default is -- "http://submit.kerneloops.org/submitoops.php". -- --Integration with ABRT events --~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --'abrt-action-kerneloops' can be used as a reporter, to allow users to report --problems to the Kerneloops tracker. This usage is pre-configured in --/etc/libreport/events.d/koops_event.conf: -- -------------- --EVENT=report_Kerneloops analyzer=Kerneloops abrt-action-kerneloops -------------- -- --It can be also used automatically and immediately without user interaction. --When this is desired, modify the event configuration file to run the tool on --the 'post-create' event: -- -------------- --EVENT=post-create analyzer=Kerneloops abrt-action-kerneloops -------------- -- --OPTIONS --------- ---v:: -- Be more verbose. Can be given multiple times. -- ---d DIR:: -- Path to dump directory. -- ---c CONFFILE:: -- Path to configration file. When used in ABRT event system, the file -- contains site-wide configuration. Users can change the values via -- environment variables. -- --ENVIRONMENT VARIABLES ----------------------- --Environment variables take precedence over values provided in --the configuration file. -- --'KerneloopsReporter_SubmitURL':: -- The URL of the kerneloops tracker. -- --AUTHORS --------- --* ABRT team --- -1.7.6 - diff --git a/0004-install-debuginfo-ask-before-downloading.patch b/0004-install-debuginfo-ask-before-downloading.patch deleted file mode 100644 index 90f2f74..0000000 --- a/0004-install-debuginfo-ask-before-downloading.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 90893a0c84a594337ca22fa83f364f5b4a7fb1b2 Mon Sep 17 00:00:00 2001 -From: Michal Toman -Date: Thu, 21 Jul 2011 16:48:08 +0200 -Subject: [PATCH 4/4] install-debuginfo: ask before downloading - ---- - src/plugins/abrt-action-install-debuginfo | 34 ++++++---------------------- - 1 files changed, 8 insertions(+), 26 deletions(-) - -diff --git a/src/plugins/abrt-action-install-debuginfo b/src/plugins/abrt-action-install-debuginfo -index 2ad0790..31aab2c 100644 ---- a/src/plugins/abrt-action-install-debuginfo -+++ b/src/plugins/abrt-action-install-debuginfo -@@ -11,6 +11,7 @@ import errno - import time - import getopt - import shutil -+import reportclient - from subprocess import Popen, PIPE - from yum import _, YumBase - from yum.callbacks import DownloadBaseCallback -@@ -74,22 +75,6 @@ def unmute_stdout(): - else: - print "ERR: unmute called without mute?" - --def ask_yes_no(prompt, retries=4): -- while True: -- try: -- response = raw_input(prompt) -- except EOFError: -- log1("got eof, probably executed from helper, assuming - yes") -- return True -- if response in (_("y")): # for translators -> y/Y as yes -- return True -- if response in ("", _("n")): # for translators -> N/n as no -- return False -- retries = retries - 1 -- if retries < 0: -- break -- return False -- - # TODO: unpack just required debuginfo and not entire rpm? - # ..that can lead to: foo.c No such file and directory - # files is not used... -@@ -286,16 +271,13 @@ class DebugInfoDownload(YumBase): - print _("Can't find packages for %u debuginfo files") % len(not_found) - if verbose != 0 or total_pkgs != 0: - print _("Packages to download: %u") % total_pkgs -- print _("Downloading %.2fMb, installed size: %.2fMb") % ( -- todownload_size / (1024**2), -- installed_size / (1024**2) -- ) -- -- # ask only if we have terminal, because for now we don't have a way -- # how to pass the question to gui and the response back -- if noninteractive == False and sys.stdout.isatty(): -- if not ask_yes_no(_("Is this ok? [y/N] ")): -- return RETURN_OK -+ question = _("Downloading %.2fMb, installed size: %.2fMb. Continue?") % ( -+ todownload_size / (1024**2), -+ installed_size / (1024**2) -+ ) -+ if not reportclient.ask_yes_no(question): -+ print _("Download cancelled by user") -+ return RETURN_OK - - for pkg, files in package_files_dict.iteritems(): - dnlcb.downloaded_pkgs = downloaded_pkgs --- -1.7.6 - diff --git a/abrt-ccpp.init b/abrt-ccpp.init deleted file mode 100644 index 480cb1e..0000000 --- a/abrt-ccpp.init +++ /dev/null @@ -1,151 +0,0 @@ -#!/bin/bash -# Install abrt coredump hook -# -# chkconfig: 35 82 16 -# description: Installs coredump handler which saves segfault data -### BEGIN INIT INFO -# Provides: abrt-ccpp -# Required-Start: $abrtd -# Default-Stop: 0 1 2 6 -# Default-Start: 3 5 -# Short-Description: Installs coredump handler which saves segfault data -# Description: Installs coredump handler which saves segfault data -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -# For debugging -dry_run=false -verbose=false - -# We don't have pid files, therefore have to use -# a flag file in /var/lock/subsys to enable GUI service tools -# to figure out our status -LOCK="/var/lock/subsys/abrt-ccpp" - -PATTERN_FILE="/proc/sys/kernel/core_pattern" -SAVED_PATTERN_FILE="/var/run/abrt/saved_core_pattern" -HOOK_BIN="/usr/libexec/abrt-hook-ccpp" -PATTERN="|$HOOK_BIN /var/spool/abrt %s %c %p %u %g %t %h %e" - -# core_pipe_limit specifies how many dump_helpers can run at the same time -# 0 - means unlimited, but it's not guaranteed that /proc/ of crashing -# process will be available for dump_helper. -# 4 - means that 4 dump_helpers can run at the same time (the rest will also -# run, but they will fail to read /proc/). -# -# This should be enough for ABRT, we can miss some crashes, but what are -# the odds that more processes crash at the same time? And moreover, -# do people want to save EVERY ONE of the crashes when they have -# a crash storm? I don't think so. -# The value of 4 has been recommended by nhorman. -# -CORE_PIPE_LIMIT_FILE="/proc/sys/kernel/core_pipe_limit" -CORE_PIPE_LIMIT="4" - -RETVAL=0 - -check() { - # Check that we're a privileged user - [ "`id -u`" = 0 ] || exit 4 -} - -start() { - check - - cur=`cat "$PATTERN_FILE"` - cur_first=`printf "%s" "$cur" | sed 's/ .*//'` - - $verbose && printf "cur:'%s'\n" "$cur" - # Is it already installed? - if test x"$cur_first" != x"|$HOOK_BIN"; then # no - # It is not installed - printf "%s\n" "$cur" >"$SAVED_PATTERN_FILE" - OLD_PATTERN="" - # Does old pattern start with '|'? - if test x"${cur#|}" = x"$cur"; then # no - # Encode it as hex string, NUL terminated - OLD_PATTERN=`printf "%s" "$cur" | od -tx1 | sed 's/000[^ ]*//' | xargs | sed 's/ //g'` - $verbose && printf "OLD_PATTERN:'%s'\n" "$OLD_PATTERN" - OLD_PATTERN=" ${OLD_PATTERN}00" - fi - # Install new handler - $verbose && printf "Installing to %s:'%s'\n" "$PATTERN_FILE" "${PATTERN}${OLD_PATTERN}" - $dry_run || echo "${PATTERN}${OLD_PATTERN}" >"$PATTERN_FILE" - $dry_run || touch -- "$LOCK" - - # Check core_pipe_limit and change it if it's 0, - # otherwise the abrt-hook-ccpp won't be able to read /proc/ - # of the crashing process - if test x"`cat "$CORE_PIPE_LIMIT_FILE"`" = x"0"; then - echo "$CORE_PIPE_LIMIT" >"$CORE_PIPE_LIMIT_FILE" - fi - fi - return $RETVAL -} - -stop() { - check - - if test -f "$SAVED_PATTERN_FILE"; then - $verbose && printf "Restoring to %s:'%s'\n" "$PATTERN_FILE" "`cat "$SAVED_PATTERN_FILE"`" - $dry_run || cat "$SAVED_PATTERN_FILE" >"$PATTERN_FILE" - fi - $dry_run || rm -f -- "$LOCK" - return $RETVAL -} - -restart() { - stop - start -} - -reload() { - restart -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload) - reload - ;; -force-reload) - echo "$0: Unimplemented feature." - RETVAL=3 - ;; -restart) - restart - ;; -condrestart) - cur=`cat "$PATTERN_FILE"` - cur_first=`printf "%s" "$cur" | sed 's/ .*//'` - # Is it already installed? - if test x"$cur_first" = x"|$HOOK_BIN"; then # yes - $verbose && printf "Installed, re-installing\n" - restart - fi - ;; -status) - cur=`cat "$PATTERN_FILE"` - cur_first=`printf "%s" "$cur" | sed 's/ .*//'` - # Is it already installed? - if test x"$cur_first" = x"|$HOOK_BIN"; then # yes - $verbose && printf "Installed\n" - RETVAL=0 - else - $verbose && printf "Not installed\n" - RETVAL=3 # "stopped normally" - fi - ;; -*) - echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/abrt-oops.init b/abrt-oops.init deleted file mode 100644 index 8c1c7bf..0000000 --- a/abrt-oops.init +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash -# Start ABRT kernel log watcher -# -# chkconfig: 35 82 16 -# description: Watches system log for oops messages, creates ABRT dump directories for each oops -### BEGIN INIT INFO -# Provides: abrt-oops -# Required-Start: $abrtd -# Default-Stop: 0 1 2 6 -# Default-Start: 3 5 -# Short-Description: Watches system log for oops messages, creates ABRT dump directories for each oops -# Description: Watches system log for oops messages, creates ABRT dump directories for each oops -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -# For debugging -dry_run=false -verbose=false - -# We don't have pid files, therefore have to use -# a flag file in /var/lock/subsys to enable GUI service tools -# to figure out our status -LOCK="/var/lock/subsys/abrt-oops" - -RETVAL=0 - -check() { - # Check that we're a privileged user - [ "`id -u`" = 0 ] || exit 4 -} - -start() { - check - killall abrt-dump-oops 2>/dev/null - setsid abrt-dump-oops -d /var/spool/abrt -rwx /var/log/messages /dev/null 2>&1 & - $dry_run || touch -- "$LOCK" - return $RETVAL -} - -stop() { - check - killall abrt-dump-oops - $dry_run || rm -f -- "$LOCK" - return $RETVAL -} - -restart() { - stop - start -} - -reload() { - restart -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload) - reload - ;; -force-reload) - echo "$0: Unimplemented feature." - RETVAL=3 - ;; -restart) - restart - ;; -condrestart) - # Is it already running? - if test -f "$LOCK"; then # yes - $verbose && printf "Running, restarting\n" - restart - fi - ;; -status) - status abrt-dump-oops - RETVAL=$? - ;; -*) - echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/abrt-vmcore.init b/abrt-vmcore.init deleted file mode 100644 index 34e69ea..0000000 --- a/abrt-vmcore.init +++ /dev/null @@ -1,79 +0,0 @@ -#!/bin/bash -# Harvest vmcores for ABRT -# -# chkconfig: 35 82 16 -# description: Installs coredump handler which saves segfault data -### BEGIN INIT INFO -# Provides: abrt-vmcore -# Required-Start: $abrtd -# Default-Stop: 0 1 2 6 -# Default-Start: 3 5 -# Short-Description: Collects vmcore (kernel crash data) for ABRT -# Description: Collects vmcore (kernel crash data) for ABRT -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions - -LOCK="/var/lock/subsys/abrt-vmcore" -HARVEST_CMD="/usr/sbin/abrt-harvest-vmcore" - -RETVAL=0 - -check() { - # Check that we're a privileged user - [ "`id -u`" = 0 ] || exit 4 -} - -start() { - check - "$HARVEST_CMD" - RETVAL=$? - [ $RETVAL -eq 0 ] && touch -- "$LOCK" - return $RETVAL -} - -stop() { - check - rm -f -- "$LOCK" - return 0 -} - -restart() { - stop - start -} - -reload() { - restart -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload) - reload - ;; -force-reload) - echo "$0: Unimplemented feature." - RETVAL=3 - ;; -restart) - restart - ;; -condrestart) - test -f "$LOCK" && restart - ;; -status) - test -f "$LOCK" && RETVAL=0 || RETVAL=3 - ;; -*) - echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/abrt.init b/abrt.init deleted file mode 100644 index dde5950..0000000 --- a/abrt.init +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/bash -# Starts the abrt daemon -# -# chkconfig: 35 82 16 -# description: Daemon to detect crashing apps -# processname: abrtd -### BEGIN INIT INFO -# Provides: abrt -# Required-Start: $syslog $local_fs -# Required-Stop: $syslog $local_fs -# Default-Stop: 0 1 2 6 -# Default-Start: 3 5 -# Short-Description: start and stop abrt daemon -# Description: Listen to and dispatch crash events -### END INIT INFO - -# Source function library. -. /etc/rc.d/init.d/functions -ABRT_BIN="/usr/sbin/abrtd" -LOCK="/var/lock/subsys/abrtd" -OLD_LOCK="/var/lock/subsys/abrt" -RETVAL=0 - -# -# Set these variables if you are behind proxy -# -#export http_proxy= -#export https_proxy= - -# -# See how we were called. -# - -check() { - # Check that we're a privileged user - [ "`id -u`" = 0 ] || exit 4 - - # Check if abrt is executable - test -x $ABRT_BIN || exit 5 -} - -start() { - - check - - # Check if it is already running - if [ ! -f $LOCK ] && [ ! -f $OLD_LOCK ]; then - echo -n $"Starting abrt daemon: " - daemon $ABRT_BIN - RETVAL=$? - [ $RETVAL -eq 0 ] && touch $LOCK - echo - fi - return $RETVAL -} - -stop() { - - check - - echo -n $"Stopping abrt daemon: " - killproc $ABRT_BIN - RETVAL=$? - [ $RETVAL -eq 0 ] && rm -f $LOCK - [ $RETVAL -eq 0 ] && rm -f $OLD_LOCK - echo - return $RETVAL -} - - -restart() { - stop - start -} - -reload() { - restart -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload) - reload - ;; -force-reload) - echo "$0: Unimplemented feature." - RETVAL=3 - ;; -restart) - restart - ;; -condrestart) - if [ -f $LOCK ]; then - restart - fi - # update from older version - if [ -f $OLD_LOCK ]; then - restart - fi - ;; -status) - status abrtd - RETVAL=$? - ;; -*) - echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}" - RETVAL=2 -esac - -exit $RETVAL diff --git a/abrt.spec b/abrt.spec index de9e161..c2c103e 100644 --- a/abrt.spec +++ b/abrt.spec @@ -15,7 +15,7 @@ Summary: Automatic bug detection and reporting tool Name: abrt -Version: 2.0.6 +Version: 2.0.7 Release: 1%{?dist} License: GPLv2+ Group: Applications/System @@ -24,8 +24,7 @@ Source: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz Source1: abrt1_to_abrt2 Patch0: blacklist.patch Patch1: abrt_disable_gpgcheck.diff -Patch2: 0002-gtk3-build-fixes.patch -Patch3: 0003-glib-2.31-build-fixes.patch +Patch2: 0002-disabled-reporting-to-kerneloops.org.patch BuildRequires: dbus-devel BuildRequires: gtk2-devel BuildRequires: rpm-devel >= 4.6 @@ -173,6 +172,7 @@ Requires: gdb >= 7.0-3 Requires: abrt-gui Requires: libreport-plugin-logger, libreport-plugin-bugzilla Requires: abrt-retrace-client +Requires: libreport-plugin-bodhi #Requires: abrt-plugin-firefox Obsoletes: bug-buddy > 0.0.1 Provides: bug-buddy @@ -186,17 +186,11 @@ Virtual package to make easy default installation on desktop environments. %patch0 -p1 -b .blacklist # general %patch1 -p1 -b .gpg -%patch2 -p1 -b .gtk3 -%patch3 -p1 -b .glib231 +%patch2 -p1 -b .disable_koops_org %build -mkdir -p m4 -test -r m4/aclocal.m4 || touch m4/aclocal.m4 autoconf -automake %configure -sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool -sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool CFLAGS="-fno-strict-aliasing" make %{?_smp_mflags} @@ -241,11 +235,9 @@ getent passwd abrt >/dev/null || useradd --system -g abrt -u %{abrt_gid_uid} -d exit 0 %post -## [ $1 -eq 1 ] install section if [ $1 -eq 1 ]; then %if %{with systemd} # Enable (but don't start) the units by default - /bin/systemctl daemon-reload >/dev/null 2>&1 || : /bin/systemctl enable abrtd.service >/dev/null 2>&1 || : %else /sbin/chkconfig --add abrtd @@ -258,70 +250,29 @@ fi # because /cache/abrt-di/* was created under root with root:root # so 2.x fails when it tries to extract debuginfo there.. chown -R abrt:abrt %{_localstatedir}/cache/abrt-di -## [ $1 -eq 1 ] install section if [ $1 -eq 1 ]; then %if %{with systemd} # Enable (but don't start) the units by default - /bin/systemctl daemon-reload >/dev/null 2>&1 || : /bin/systemctl enable abrt-ccpp.service >/dev/null 2>&1 || : %else /sbin/chkconfig --add abrt-ccpp %endif fi -# FIXME: Workaround for update from abrt-1.1.x, can be removed in -# F17(18) update. When we are updating from ABRT 1 to ABRT 2, assume -# that abrtd service is enabled and thus enable the new abrt-ccpp -# service. If abrtd is running on the system, run abrt-ccpp service -# as well, because what was a part of abrtd became a separate service. - -## [ $1 -gt 1 ] upgrade section -if [ $1 -gt 1 ]; then - %if %{with systemd} - /bin/systemctl restart abrt-ccpp.service >/dev/null 2>&1 || : - %else - /sbin/chkconfig --add abrt-ccpp > /dev/null 2>&1 || : - /sbin/pidof abrtd >/dev/null 2>&1 - if [ $? -eq 0 ]; then # Is abrtd running? - service abrt-ccpp restart >/dev/null 2>&1 || : - fi - %endif -fi %post addon-kerneloops -## [ $1 -eq 1 ] install section if [ $1 -eq 1 ]; then %if %{with systemd} # Enable (but don't start) the units by default - /bin/systemctl daemon-reload >/dev/null 2>&1 || : /bin/systemctl enable abrt-oops.service >/dev/null 2>&1 || : %else /sbin/chkconfig --add abrt-oops %endif fi -# FIXME: Workaround for update from abrt-1.1.x, can be removed in -# F17(18) update. When we are updating from ABRT 1 to ABRT 2, assume -# that abrtd service is enabled and thus enable the new abrt-oops -# service. If abrtd is running on the system, run abrt-ccpp service -# as well, because what was a part of abrtd became a separate service. - -## [ $1 -gt 1 ] upgrade section -if [ $1 -gt 1 ]; then - %if %{with systemd} - /bin/systemctl try-restart abrt-oops.service >/dev/null 2>&1 || : - %else - /sbin/chkconfig --add abrt-oops > /dev/null 2>&1 || : - /sbin/pidof abrtd >/dev/null 2>&1 - if [ $? -eq 0 ]; then # Is abrtd running? - service abrt-oops restart >/dev/null 2>&1 || : - fi - %endif -fi %post addon-vmcore if [ $1 -eq 1 ]; then %if %{with systemd} # Enable (but don't start) the units by default - /bin/systemctl daemon-reload >/dev/null 2>&1 || : /bin/systemctl enable abrt-vmcore.service >/dev/null 2>&1 || : %else /sbin/chkconfig --add abrt-vmcore @@ -374,16 +325,16 @@ fi %if %{with systemd} %postun -/bin/systemctl try-reload abrtd.service >/dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : %postun addon-kerneloops -/bin/systemctl try-reload abrt-oops.service >/dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : %postun addon-vmcore -/bin/systemctl try-reload abrt-vmcore.service >/dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : %postun addon-ccpp -/bin/systemctl try-reload abrt-ccpp.service >/dev/null 2>&1 || : +/bin/systemctl daemon-reload >/dev/null 2>&1 || : %endif @@ -425,6 +376,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_initrddir}/abrtd %endif %{_sbindir}/abrtd +%{_sbindir}/abrt-dbus %{_sbindir}/abrt-server %{_libexecdir}/abrt-handle-event %{_bindir}/abrt-handle-upload @@ -450,6 +402,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_mandir}/man1/abrt-server.1.gz %{_mandir}/man1/abrt-action-save-package-data.1.gz %{_mandir}/man8/abrtd.8.gz +%{_mandir}/man8/abrt-dbus.8.gz %{_mandir}/man5/abrt.conf.5.gz %{_mandir}/man5/abrt-action-save-package-data.conf.5.gz # {_mandir}/man5/pyhook.conf.5.gz @@ -564,9 +517,20 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %defattr(-,root,root,-) %changelog +* Wed Dec 07 2011 Jiri Moskovcak 2.0.7-1 +- new version +- disabled kerneloops.org +- abrt-ccpp hook fixes +- catch indentation errors in python rhbz#578969 +- fixed make check +- fixed retrace-client to work with rawhide +- require abrtd service in other services rhbz#752014 +- fixed problems with dupes rhbz#701717 +- keep abrt services enabled when updating F15->F16 +- Resolves: 752014 749891 749603 744887 730422 665210 639068 625445 701717 752014 578969 732876 757683 753183 756146 749100 + * Fri Nov 04 2011 Jiri Moskovcak 2.0.6-1 - new version -- moved to gtk3 - Resolves: #701171 #712508 #726033 #728194 #728314 #730107 #733389 #738602 - Resolves: #741242 #749365 #700252 #734298 #736016 #738324 #748457 #692274 - Resolves: #711986 #723219 #749891 #712602 #744887 #749603 #625445 #665210 diff --git a/allow_bz_for_koops.patch b/allow_bz_for_koops.patch deleted file mode 100644 index 49f9068..0000000 --- a/allow_bz_for_koops.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- abrt-2.0.6/src/daemon/abrt-action-save-package-data.conf 2011-11-04 13:03:43.271953835 +0100 -+++ abrt-2.0.6_/src/daemon/abrt-action-save-package-data.conf 2011-11-04 13:03:36.661746556 +0100 -@@ -3,7 +3,7 @@ - # the list of public keys used to check the signature is - # in the file gpg_keys - # --OpenGPGCheck = yes -+OpenGPGCheck = no - - # Blacklisted packages - # diff --git a/enable_bz_for_oops.patch b/enable_bz_for_oops.patch deleted file mode 100644 index eac857e..0000000 --- a/enable_bz_for_oops.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- abrt-2.0.4/src/plugins/koops_event.conf 2011-07-19 16:59:38.000000000 +0200 -+++ abrt-2.0.4_/src/plugins/koops_event.conf 2011-08-19 11:04:05.485464706 +0200 -@@ -8,4 +8,7 @@ EVENT=post-create analyzer=Kerneloops - #EVENT=post-create analyzer=Kerneloops abrt-action-kerneloops - - # report --EVENT=report_Kerneloops analyzer=Kerneloops abrt-action-kerneloops -+EVENT=report_Kerneloops analyzer=Kerneloops reporter-kerneloops -+ -+#fedora -+EVENT=reporter_Bugzilla analyzer=Kerneloops reporter-bugzilla diff --git a/free_space_check.patch b/free_space_check.patch deleted file mode 100644 index a268792..0000000 --- a/free_space_check.patch +++ /dev/null @@ -1,29 +0,0 @@ -commit e91b22a9654bf9912f3f88c917773a96ff7733a3 -Author: Martin Milata -Date: Thu Sep 8 16:29:01 2011 +0200 - - Fix free space checking - - The g_settings_dump_location was freed before it was passed to the free - space check, thus preventing it from working. - -diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c -index 983706e..330f85f 100644 ---- a/src/daemon/abrt-server.c -+++ b/src/daemon/abrt-server.c -@@ -143,7 +143,6 @@ static int create_debug_dump() - - /* Trim old crash dumps if necessary */ - load_abrt_conf(); -- free_abrt_conf_data(); /* can do this because we need only g_settings_nMaxCrashReportsSize */ - if (g_settings_nMaxCrashReportsSize > 0) - { - /* x1.25 and round up to 64m: go a bit up, so that usual in-daemon trimming -@@ -154,6 +153,7 @@ static int create_debug_dump() - check_free_space(maxsize); - trim_debug_dumps(DEBUG_DUMPS_DIR, maxsize * (double)(1024*1024), path); - } -+ free_abrt_conf_data(); - - free(path); - diff --git a/null_deref.patch b/null_deref.patch deleted file mode 100644 index 4f7df5f..0000000 --- a/null_deref.patch +++ /dev/null @@ -1,21 +0,0 @@ -commit d2572a98f41df96534f41062b0020ee6a10047ea -Author: Martin Milata -Date: Tue Jul 26 16:49:28 2011 +0200 - - a-a-save-package-data: Fix NULL dereference - - Fixes #324. - -diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c -index d37a05d..ddcf4ac 100644 ---- a/src/daemon/abrt-action-save-package-data.c -+++ b/src/daemon/abrt-action-save-package-data.c -@@ -160,7 +160,7 @@ static char *get_argv1_if_full_path(const char* cmdline) - * with '/', it is not a full path to script - * and we can't use it to determine the package name - */ -- if (*argv1 != '/') -+ if (argv1 == NULL || *argv1 != '/') - return NULL; - - /* good, it has "/foo/bar" form, return it */