Compare commits
17 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
62f98d6aac | ||
|
|
95e1e93295 | ||
|
|
3989c835a1 | ||
|
|
ff93696553 | ||
|
|
d596add397 | ||
|
|
af7973f3e9 | ||
|
|
60adb8e27a | ||
|
|
fc77ae9a35 | ||
|
|
36fd7e2734 | ||
|
|
c8398286fa | ||
|
|
57686f5cee | ||
|
|
2407785f44 | ||
|
|
30183d6308 | ||
|
|
f3e5f01db5 | ||
|
|
0e4b4cd798 | ||
|
|
60c9139c8f | ||
|
|
22fc4da4ae |
54 changed files with 97915 additions and 1456 deletions
|
|
@ -1 +0,0 @@
|
|||
1
|
||||
44
.gitignore
vendored
44
.gitignore
vendored
|
|
@ -43,47 +43,3 @@ abrt-1.1.13.tar.gz
|
|||
/abrt-2.5.1.tar.gz
|
||||
/abrt-2.6.0.tar.gz
|
||||
/abrt-2.6.1.tar.gz
|
||||
/abrt-2.6.2.tar.gz
|
||||
/abrt-2.7.0.tar.gz
|
||||
/abrt-2.7.1.tar.gz
|
||||
/abrt-2.7.2.tar.gz
|
||||
/abrt-2.8.0.tar.gz
|
||||
/abrt-2.8.1.tar.gz
|
||||
/abrt-2.8.2.tar.gz
|
||||
/abrt-2.9.0.tar.gz
|
||||
/abrt-2.10.0.tar.gz
|
||||
/abrt-2.10.1.tar.gz
|
||||
/abrt-2.10.2.tar.gz
|
||||
/abrt-2.10.3.tar.gz
|
||||
/abrt-2.10.4.tar.gz
|
||||
/abrt-2.10.5.tar.gz
|
||||
/abrt-2.10.6.tar.gz
|
||||
/abrt-2.10.7.tar.gz
|
||||
/abrt-2.10.8.tar.gz
|
||||
/abrt-2.10.9.tar.gz
|
||||
/abrt-2.10.10.tar.gz
|
||||
/abrt-2.11.0.tar.gz
|
||||
/abrt-2.11.1.tar.gz
|
||||
/abrt-2.12.0.tar.gz
|
||||
/abrt-2.12.1.tar.gz
|
||||
/abrt-2.12.2.tar.gz
|
||||
/abrt-2.13.0.tar.gz
|
||||
/abrt-2.14.0.tar.gz
|
||||
/abrt-2.14.1.tar.gz
|
||||
/abrt-2.14.2.tar.gz
|
||||
/abrt-2.14.3.tar.gz
|
||||
/abrt-2.14.4.tar.gz
|
||||
/abrt-2.14.5.tar.gz
|
||||
/abrt-2.14.6.tar.gz
|
||||
/abrt-2.15.0.tar.gz
|
||||
/abrt-2.15.1.tar.gz
|
||||
/abrt-2.16.0.tar.gz
|
||||
/abrt-2.16.1.tar.gz
|
||||
/abrt-2.17.0.tar.gz
|
||||
/abrt-2.17.1.tar.gz
|
||||
/abrt-2.17.2.tar.gz
|
||||
/abrt-2.17.4.tar.gz
|
||||
/abrt-2.17.5.tar.gz
|
||||
/abrt-2.17.6.tar.gz
|
||||
/abrt-2.17.7.tar.gz
|
||||
/abrt-2.17.8.tar.gz
|
||||
|
|
|
|||
114
0001-cli-enable-authetication-for-all-commands.patch
Normal file
114
0001-cli-enable-authetication-for-all-commands.patch
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
From 5c21d1e390603fdc56dba33cdc69672b3b75beff Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 8 Jul 2015 14:16:39 +0200
|
||||
Subject: [PATCH] cli: enable authetication for all commands
|
||||
|
||||
I forgot to test the info, rm and status commands when I was working on
|
||||
commit cb770e507f247476651b84ebbef63a5cd4c41d11 and later on I found out
|
||||
that these commands must be updated to work with the system problems.
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/cli/list.c | 2 +-
|
||||
src/cli/rm.c | 41 ++++++++++++++++++++++++++++-------------
|
||||
src/cli/status.c | 3 ++-
|
||||
3 files changed, 31 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/src/cli/list.c b/src/cli/list.c
|
||||
index 31d1835..8bfb3cc 100644
|
||||
--- a/src/cli/list.c
|
||||
+++ b/src/cli/list.c
|
||||
@@ -35,7 +35,7 @@ static problem_data_t *load_problem_data(const char *problem_id)
|
||||
char *name2 = NULL;
|
||||
|
||||
/* First, check if there is a problem with the passed id */
|
||||
- GList *problems = get_problems_over_dbus(/*don't authorize*/false);
|
||||
+ GList *problems = get_problems_over_dbus(g_cli_authenticate);
|
||||
GList *item = g_list_find_custom(problems, problem_id, (GCompareFunc)strcmp);
|
||||
|
||||
/* (git requires at least 5 char hash prefix, we do the same) */
|
||||
diff --git a/src/cli/rm.c b/src/cli/rm.c
|
||||
index fe458ff..37d50e2 100644
|
||||
--- a/src/cli/rm.c
|
||||
+++ b/src/cli/rm.c
|
||||
@@ -19,12 +19,39 @@
|
||||
|
||||
#include "libabrt.h"
|
||||
#include "builtin-cmd.h"
|
||||
+#include "abrt-cli-core.h"
|
||||
|
||||
/* TODO npajkovs:
|
||||
* add -n, --dry-run
|
||||
* add -q, --quite
|
||||
*/
|
||||
|
||||
+static int remove_using_dbus(const char **dirs_strv)
|
||||
+{
|
||||
+ GList *dirs = NULL;
|
||||
+ while (*dirs_strv)
|
||||
+ dirs = g_list_prepend(dirs, (void *)*dirs_strv++);
|
||||
+ const int ret = delete_problem_dirs_over_dbus(dirs);
|
||||
+ g_list_free(dirs);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int remove_using_abrtd_or_fs(const char **dirs_strv)
|
||||
+{
|
||||
+ int errs = 0;
|
||||
+ while (*dirs_strv)
|
||||
+ {
|
||||
+ int status;
|
||||
+ const char *rm_dir = *dirs_strv++;
|
||||
+ status = delete_dump_dir_possibly_using_abrtd(rm_dir);
|
||||
+ if (!status)
|
||||
+ log("rm '%s'", rm_dir);
|
||||
+ else
|
||||
+ errs++;
|
||||
+ }
|
||||
+ return errs;
|
||||
+}
|
||||
+
|
||||
int cmd_remove(int argc, const char **argv)
|
||||
{
|
||||
const char *program_usage_string = _(
|
||||
@@ -42,17 +69,5 @@ int cmd_remove(int argc, const char **argv)
|
||||
if (!argv[0])
|
||||
show_usage_and_die(program_usage_string, program_options);
|
||||
|
||||
- int errs = 0;
|
||||
- while (*argv)
|
||||
- {
|
||||
- int status;
|
||||
- const char *rm_dir = *argv++;
|
||||
- status = delete_dump_dir_possibly_using_abrtd(rm_dir);
|
||||
- if (!status)
|
||||
- log("rm '%s'", rm_dir);
|
||||
- else
|
||||
- errs++;
|
||||
- }
|
||||
-
|
||||
- return errs;
|
||||
+ return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(argv);
|
||||
}
|
||||
diff --git a/src/cli/status.c b/src/cli/status.c
|
||||
index a65ba05..0635289 100644
|
||||
--- a/src/cli/status.c
|
||||
+++ b/src/cli/status.c
|
||||
@@ -20,12 +20,13 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include "problem_api.h"
|
||||
+#include "abrt-cli-core.h"
|
||||
|
||||
static unsigned int count_problem_dirs(unsigned long since)
|
||||
{
|
||||
unsigned count = 0;
|
||||
|
||||
- GList *problems = get_problems_over_dbus(/*don't authorize*/false);
|
||||
+ GList *problems = get_problems_over_dbus(g_cli_authenticate);
|
||||
for (GList *iter = problems; iter != NULL; iter = g_list_next(iter))
|
||||
{
|
||||
const char *problem_id = (const char *)iter->data;
|
||||
--
|
||||
2.4.3
|
||||
|
||||
32
0002-cli-remove-useless-code-from-print_crash.patch
Normal file
32
0002-cli-remove-useless-code-from-print_crash.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
From de12e078fc167fd1a818b101c1a21fcedf32a1a5 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 8 Jul 2015 17:03:55 +0200
|
||||
Subject: [PATCH] cli: remove useless code from print_crash()
|
||||
|
||||
Revealed by coverity.
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/cli/list.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/cli/list.c b/src/cli/list.c
|
||||
index 8bfb3cc..e8ec37b 100644
|
||||
--- a/src/cli/list.c
|
||||
+++ b/src/cli/list.c
|
||||
@@ -63,11 +63,10 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz
|
||||
char *desc;
|
||||
if (detailed)
|
||||
{
|
||||
- int show_multiline = (detailed ? MAKEDESC_SHOW_MULTILINE : 0);
|
||||
desc = make_description(problem_data,
|
||||
/*names_to_skip:*/ NULL,
|
||||
/*max_text_size:*/ text_size,
|
||||
- MAKEDESC_SHOW_FILES | show_multiline);
|
||||
+ MAKEDESC_SHOW_FILES | MAKEDESC_SHOW_MULTILINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
--
|
||||
2.4.3
|
||||
|
||||
216
0003-cli-use-internal-command-impl-in-the-command-process.patch
Normal file
216
0003-cli-use-internal-command-impl-in-the-command-process.patch
Normal file
|
|
@ -0,0 +1,216 @@
|
|||
From cd698516de709ee3d8480fd7990a8082dffddb45 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 8 Jul 2015 17:04:41 +0200
|
||||
Subject: [PATCH] cli: use internal command impl in the command process
|
||||
|
||||
It did not seem to be a good idea to add wrappers for the internal
|
||||
commands, because the wrappers would be one line functions. Now, we need
|
||||
to do more sophisticated processing (authenticate, chown), so adding the
|
||||
wrappers is the best choice to provide the same functionality in the
|
||||
command process.
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/cli/builtin-cmd.h | 3 +++
|
||||
src/cli/list.c | 8 ++++++-
|
||||
src/cli/process.c | 16 ++++---------
|
||||
src/cli/report.c | 65 +++++++++++++++++++++++++++------------------------
|
||||
src/cli/rm.c | 7 +++++-
|
||||
5 files changed, 56 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/src/cli/builtin-cmd.h b/src/cli/builtin-cmd.h
|
||||
index bc80479..c6cd691 100644
|
||||
--- a/src/cli/builtin-cmd.h
|
||||
+++ b/src/cli/builtin-cmd.h
|
||||
@@ -22,8 +22,11 @@
|
||||
|
||||
extern int cmd_list(int argc, const char **argv);
|
||||
extern int cmd_remove(int argc, const char **argv);
|
||||
+extern int _cmd_remove(const char **dirs_strv);
|
||||
extern int cmd_report(int argc, const char **argv);
|
||||
+extern int _cmd_report(const char **dirs_strv, int remove);
|
||||
extern int cmd_info(int argc, const char **argv);
|
||||
+extern int _cmd_info(problem_data_t *problem_data, int detailed, int text_size);
|
||||
extern int cmd_status(int argc, const char **argv);
|
||||
extern int cmd_process(int argc, const char **argv);
|
||||
|
||||
diff --git a/src/cli/list.c b/src/cli/list.c
|
||||
index e8ec37b..68dda47 100644
|
||||
--- a/src/cli/list.c
|
||||
+++ b/src/cli/list.c
|
||||
@@ -168,6 +168,12 @@ int cmd_list(int argc, const char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+int _cmd_info(problem_data_t *problem_data, int detailed, int text_size)
|
||||
+{
|
||||
+ print_crash(problem_data, detailed, text_size);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int cmd_info(int argc, const char **argv)
|
||||
{
|
||||
const char *program_usage_string = _(
|
||||
@@ -205,7 +211,7 @@ int cmd_info(int argc, const char **argv)
|
||||
continue;
|
||||
}
|
||||
|
||||
- print_crash(problem, opt_detailed, text_size);
|
||||
+ _cmd_info(problem, opt_detailed, text_size);
|
||||
problem_data_free(problem);
|
||||
if (*argv)
|
||||
printf("\n");
|
||||
diff --git a/src/cli/process.c b/src/cli/process.c
|
||||
index 39462f9..401ef60 100644
|
||||
--- a/src/cli/process.c
|
||||
+++ b/src/cli/process.c
|
||||
@@ -68,28 +68,22 @@ static int process_one_crash(problem_data_t *problem_data)
|
||||
if(strcmp(action, "rm") == 0 || strcmp(action, "remove") == 0 )
|
||||
{
|
||||
log(_("Deleting '%s'"), dir_name);
|
||||
- delete_dump_dir_possibly_using_abrtd(dir_name);
|
||||
+ const char *dirs_strv[] = {dir_name, NULL};
|
||||
+ _cmd_remove(dirs_strv);
|
||||
|
||||
ret_val = ACT_REMOVE;
|
||||
}
|
||||
else if (not_reportable == NULL && (strcmp(action, "e") == 0 || strcmp(action, "report") == 0))
|
||||
{
|
||||
log(_("Reporting '%s'"), dir_name);
|
||||
- report_problem_in_dir(dir_name,
|
||||
- LIBREPORT_WAIT
|
||||
- | LIBREPORT_RUN_CLI);
|
||||
+ const char *dirs_strv[] = {dir_name, NULL};
|
||||
+ _cmd_report(dirs_strv, /*do not delete*/0);
|
||||
|
||||
ret_val = ACT_REPORT;
|
||||
}
|
||||
else if (strcmp(action, "i") == 0 || strcmp(action, "info") == 0)
|
||||
{
|
||||
- char *desc = make_description(problem_data,
|
||||
- /*names_to_skip:*/ NULL,
|
||||
- /*max_text_size:*/ CD_TEXT_ATT_SIZE_BZ,
|
||||
- MAKEDESC_SHOW_FILES | MAKEDESC_SHOW_MULTILINE);
|
||||
-
|
||||
- fputs(desc, stdout);
|
||||
- free(desc);
|
||||
+ _cmd_info(problem_data, /*detailed*/1, CD_TEXT_ATT_SIZE_BZ);
|
||||
|
||||
ret_val = ACT_INFO;
|
||||
}
|
||||
diff --git a/src/cli/report.c b/src/cli/report.c
|
||||
index 194f7c9..19b4c51 100644
|
||||
--- a/src/cli/report.c
|
||||
+++ b/src/cli/report.c
|
||||
@@ -22,38 +22,12 @@
|
||||
#include "abrt-cli-core.h"
|
||||
#include "builtin-cmd.h"
|
||||
|
||||
-int cmd_report(int argc, const char **argv)
|
||||
+int _cmd_report(const char **dirs_strv, int remove)
|
||||
{
|
||||
- const char *program_usage_string = _(
|
||||
- "& report [options] DIR..."
|
||||
- );
|
||||
-
|
||||
- enum {
|
||||
- OPT_v = 1 << 0,
|
||||
- OPT_d = 1 << 1,
|
||||
- };
|
||||
-
|
||||
- struct options program_options[] = {
|
||||
- OPT__VERBOSE(&g_verbose),
|
||||
- OPT_BOOL('d', "delete", NULL, _("Remove PROBLEM_DIR after reporting")),
|
||||
- OPT_END()
|
||||
- };
|
||||
-
|
||||
- unsigned opts = parse_opts(argc, (char **)argv, program_options, program_usage_string);
|
||||
- argv += optind;
|
||||
-
|
||||
- if (!argv[0])
|
||||
- show_usage_and_die(program_usage_string, program_options);
|
||||
-
|
||||
- export_abrt_envvars(/*prog_prefix:*/ 0);
|
||||
-
|
||||
- load_abrt_conf();
|
||||
- free_abrt_conf_data();
|
||||
-
|
||||
int ret = 0;
|
||||
- while (*argv)
|
||||
+ while (*dirs_strv)
|
||||
{
|
||||
- const char *dir_name = *argv++;
|
||||
+ const char *dir_name = *dirs_strv++;
|
||||
char *const real_problem_id = hash2dirname_if_necessary(dir_name);
|
||||
if (real_problem_id == NULL)
|
||||
{
|
||||
@@ -75,7 +49,7 @@ int cmd_report(int argc, const char **argv)
|
||||
| LIBREPORT_RUN_CLI);
|
||||
|
||||
/* the problem was successfully reported and option is -d */
|
||||
- if((opts & OPT_d) && (status == 0 || status == EXIT_STOP_EVENT_RUN))
|
||||
+ if(remove && (status == 0 || status == EXIT_STOP_EVENT_RUN))
|
||||
{
|
||||
log(_("Deleting '%s'"), real_problem_id);
|
||||
delete_dump_dir_possibly_using_abrtd(real_problem_id);
|
||||
@@ -89,3 +63,34 @@ int cmd_report(int argc, const char **argv)
|
||||
|
||||
return ret;
|
||||
}
|
||||
+
|
||||
+int cmd_report(int argc, const char **argv)
|
||||
+{
|
||||
+ const char *program_usage_string = _(
|
||||
+ "& report [options] DIR..."
|
||||
+ );
|
||||
+
|
||||
+ enum {
|
||||
+ OPT_v = 1 << 0,
|
||||
+ OPT_d = 1 << 1,
|
||||
+ };
|
||||
+
|
||||
+ struct options program_options[] = {
|
||||
+ OPT__VERBOSE(&g_verbose),
|
||||
+ OPT_BOOL('d', "delete", NULL, _("Remove PROBLEM_DIR after reporting")),
|
||||
+ OPT_END()
|
||||
+ };
|
||||
+
|
||||
+ unsigned opts = parse_opts(argc, (char **)argv, program_options, program_usage_string);
|
||||
+ argv += optind;
|
||||
+
|
||||
+ if (!argv[0])
|
||||
+ show_usage_and_die(program_usage_string, program_options);
|
||||
+
|
||||
+ export_abrt_envvars(/*prog_prefix:*/ 0);
|
||||
+
|
||||
+ load_abrt_conf();
|
||||
+ free_abrt_conf_data();
|
||||
+
|
||||
+ return _cmd_report(argv, opts & OPT_d);
|
||||
+}
|
||||
diff --git a/src/cli/rm.c b/src/cli/rm.c
|
||||
index 37d50e2..95ae097 100644
|
||||
--- a/src/cli/rm.c
|
||||
+++ b/src/cli/rm.c
|
||||
@@ -52,6 +52,11 @@ static int remove_using_abrtd_or_fs(const char **dirs_strv)
|
||||
return errs;
|
||||
}
|
||||
|
||||
+int _cmd_remove(const char **dirs_strv)
|
||||
+{
|
||||
+ return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(dirs_strv);
|
||||
+}
|
||||
+
|
||||
int cmd_remove(int argc, const char **argv)
|
||||
{
|
||||
const char *program_usage_string = _(
|
||||
@@ -69,5 +74,5 @@ int cmd_remove(int argc, const char **argv)
|
||||
if (!argv[0])
|
||||
show_usage_and_die(program_usage_string, program_options);
|
||||
|
||||
- return (g_cli_authenticate ? remove_using_dbus : remove_using_abrtd_or_fs)(argv);
|
||||
+ return _cmd_remove(argv);
|
||||
}
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
From 23c6702959b763f6abbc3c853676c6aeedd6d3fe Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Mon, 13 Jul 2015 11:25:17 +0200
|
||||
Subject: [PATCH] a-dump-oops: allow update the problem, if more then one oops
|
||||
found
|
||||
|
||||
In case that found more than one oops process the first one.
|
||||
Without this patch the script exits with error in this case because expects
|
||||
only one oops.
|
||||
|
||||
Related to rhbz#1170534
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-dump-oops.c | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-dump-oops.c b/src/plugins/abrt-dump-oops.c
|
||||
index 58650cb..a348923 100644
|
||||
--- a/src/plugins/abrt-dump-oops.c
|
||||
+++ b/src/plugins/abrt-dump-oops.c
|
||||
@@ -172,6 +172,17 @@ int main(int argc, char **argv)
|
||||
log("Updating problem directory");
|
||||
switch (g_list_length(oops_list))
|
||||
{
|
||||
+ case 0:
|
||||
+ {
|
||||
+ error_msg(_("Can't update the problem: no oops found"));
|
||||
+ errors = 1;
|
||||
+ break;
|
||||
+ }
|
||||
+ default:
|
||||
+ {
|
||||
+ log_notice(_("More oopses found: process only the first one"));
|
||||
+ }
|
||||
+ /* falls trought */
|
||||
case 1:
|
||||
{
|
||||
struct dump_dir *dd = dd_opendir(problem_dir, /*open for writing*/0);
|
||||
@@ -181,11 +192,6 @@ int main(int argc, char **argv)
|
||||
dd_close(dd);
|
||||
}
|
||||
}
|
||||
- break;
|
||||
- default:
|
||||
- error_msg(_("Can't update the problem: more than one oops found"));
|
||||
- errors = 1;
|
||||
- break;
|
||||
}
|
||||
}
|
||||
else
|
||||
--
|
||||
2.4.3
|
||||
|
||||
117
0005-abrtd-de-prioritize-post-create-event-scripts.patch
Normal file
117
0005-abrtd-de-prioritize-post-create-event-scripts.patch
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
From 883d35109b55928d4c36d3cd6ee262d7cdc5bd4d Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 15 Jul 2015 10:20:59 +0200
|
||||
Subject: [PATCH] abrtd: de-prioritize post-create event scripts
|
||||
|
||||
The crash processing should not make the computer unusable. It sometimes
|
||||
happens that the captured data causes abrt scripts to take an inadequate
|
||||
amount of resources and the computer becomes less responsive.
|
||||
|
||||
This patch increases the nice value of post-create processes by 10 (I took
|
||||
10 because it is the default value of command 'nice'), so those
|
||||
processes will be scheduled after the more valuable processes.
|
||||
|
||||
Related: rhbz#1236422
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
doc/abrtd.txt | 7 +++++++
|
||||
src/daemon/abrt-handle-event.c | 19 ++++++++++++++++++-
|
||||
src/daemon/abrt-server.c | 14 ++++++++------
|
||||
3 files changed, 33 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/doc/abrtd.txt b/doc/abrtd.txt
|
||||
index b129d3e..32d044b 100644
|
||||
--- a/doc/abrtd.txt
|
||||
+++ b/doc/abrtd.txt
|
||||
@@ -36,6 +36,13 @@ OPTIONS
|
||||
-p::
|
||||
Add program names to log.
|
||||
|
||||
+ENVIRONMENT
|
||||
+-----------
|
||||
+ABRT_EVENT_NICE::
|
||||
+ 'abrtd' runs its post-mortem processing with the nice value incremented by 10
|
||||
+ in order to not take too much resources and keep the computer responsive. If
|
||||
+ you want to adjust the increment value, use the ABRT_EVENT_NICE environment
|
||||
+ variable.
|
||||
|
||||
CAVEATS
|
||||
-------
|
||||
diff --git a/src/daemon/abrt-handle-event.c b/src/daemon/abrt-handle-event.c
|
||||
index 4a21aa4..fda21bd 100644
|
||||
--- a/src/daemon/abrt-handle-event.c
|
||||
+++ b/src/daemon/abrt-handle-event.c
|
||||
@@ -403,16 +403,18 @@ int main(int argc, char **argv)
|
||||
abrt_init(argv);
|
||||
|
||||
const char *program_usage_string = _(
|
||||
- "& [-v -i] -e|--event EVENT DIR..."
|
||||
+ "& [-v -i -n INCREMENT] -e|--event EVENT DIR..."
|
||||
);
|
||||
|
||||
char *event_name = NULL;
|
||||
int interactive = 0; /* must be _int_, OPT_BOOL expects that! */
|
||||
+ int nice_incr = 0;
|
||||
|
||||
struct options program_options[] = {
|
||||
OPT__VERBOSE(&g_verbose),
|
||||
OPT_STRING('e', "event" , &event_name, "EVENT", _("Run EVENT on DIR")),
|
||||
OPT_BOOL('i', "interactive" , &interactive, _("Communicate directly to the user")),
|
||||
+ OPT_INTEGER('n', "nice" , &nice_incr, _("Increment the nice value by INCREMENT")),
|
||||
OPT_END()
|
||||
};
|
||||
|
||||
@@ -423,6 +425,21 @@ int main(int argc, char **argv)
|
||||
|
||||
load_abrt_conf();
|
||||
|
||||
+ const char *const opt_env_nice = getenv("ABRT_EVENT_NICE");
|
||||
+ if (opt_env_nice != NULL && opt_env_nice[0] != '\0')
|
||||
+ {
|
||||
+ log_debug("Using ABRT_EVENT_NICE=%s to increment the nice value", opt_env_nice);
|
||||
+ nice_incr = xatoi(opt_env_nice);
|
||||
+ }
|
||||
+
|
||||
+ if (nice_incr != 0)
|
||||
+ {
|
||||
+ log_debug("Incrementing the nice value by %d", nice_incr);
|
||||
+ const int ret = nice(nice_incr);
|
||||
+ if (ret == -1)
|
||||
+ perror_msg_and_die("Failed to increment the nice value");
|
||||
+ }
|
||||
+
|
||||
bool post_create = (strcmp(event_name, "post-create") == 0);
|
||||
char *dump_dir_name = NULL;
|
||||
while (*argv)
|
||||
diff --git a/src/daemon/abrt-server.c b/src/daemon/abrt-server.c
|
||||
index d7556e2..9f177e9 100644
|
||||
--- a/src/daemon/abrt-server.c
|
||||
+++ b/src/daemon/abrt-server.c
|
||||
@@ -126,15 +126,17 @@ static int delete_path(const char *dump_dir_name)
|
||||
|
||||
static pid_t spawn_event_handler_child(const char *dump_dir_name, const char *event_name, int *fdp)
|
||||
{
|
||||
- char *args[7];
|
||||
+ char *args[9];
|
||||
args[0] = (char *) LIBEXEC_DIR"/abrt-handle-event";
|
||||
/* Do not forward ASK_* messages to parent*/
|
||||
args[1] = (char *) "-i";
|
||||
- args[2] = (char *) "-e";
|
||||
- args[3] = (char *) event_name;
|
||||
- args[4] = (char *) "--";
|
||||
- args[5] = (char *) dump_dir_name;
|
||||
- args[6] = NULL;
|
||||
+ args[2] = (char *) "--nice";
|
||||
+ args[3] = (char *) "10";
|
||||
+ args[4] = (char *) "-e";
|
||||
+ args[5] = (char *) event_name;
|
||||
+ args[6] = (char *) "--";
|
||||
+ args[7] = (char *) dump_dir_name;
|
||||
+ args[8] = NULL;
|
||||
|
||||
int pipeout[2];
|
||||
int flags = EXECFLG_INPUT_NUL | EXECFLG_OUTPUT | EXECFLG_QUIET | EXECFLG_ERR2OUT;
|
||||
--
|
||||
2.4.3
|
||||
|
||||
473
0006-abrt-Fixup-component-of-select-kernel-backtraces.patch
Normal file
473
0006-abrt-Fixup-component-of-select-kernel-backtraces.patch
Normal file
|
|
@ -0,0 +1,473 @@
|
|||
From 9d9e0b94573e668bc242a68f4007e67c3eef4ddf Mon Sep 17 00:00:00 2001
|
||||
From: Laura Abbott <labbott@fedoraproject.org>
|
||||
Date: Wed, 27 May 2015 16:27:32 -0700
|
||||
Subject: [PATCH] abrt: Fixup component of select kernel backtraces
|
||||
|
||||
The kernel is a big project and certain parts of it
|
||||
may need to be tracked under different components.
|
||||
Fixup results related to those parts and assign a
|
||||
different component.
|
||||
|
||||
Signed-off-by: Laura Abbott <labbott@fedoraproject.org>
|
||||
|
||||
- ported to Python 3
|
||||
- removed a left over
|
||||
- extended a log message
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
.gitignore | 1 +
|
||||
abrt.spec.in | 1 +
|
||||
configure.ac | 1 +
|
||||
examples/oops-32bit-graphics.right | 73 +++++++++++++++++
|
||||
examples/oops-32bit-graphics.test | 71 +++++++++++++++++
|
||||
examples/oops-noveau.right | 39 +++++++++
|
||||
examples/oops-noveau.test | 38 +++++++++
|
||||
src/plugins/Makefile.am | 3 +
|
||||
.../abrt-action-check-oops-for-alt-component.in | 93 ++++++++++++++++++++++
|
||||
src/plugins/koops_event.conf | 3 +
|
||||
src/plugins/vmcore_event.conf | 1 +
|
||||
11 files changed, 324 insertions(+)
|
||||
create mode 100644 examples/oops-32bit-graphics.right
|
||||
create mode 100644 examples/oops-32bit-graphics.test
|
||||
create mode 100644 examples/oops-noveau.right
|
||||
create mode 100644 examples/oops-noveau.test
|
||||
create mode 100644 src/plugins/abrt-action-check-oops-for-alt-component.in
|
||||
|
||||
diff --git a/.gitignore b/.gitignore
|
||||
index 66410cb..f5a93e4 100644
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -30,6 +30,7 @@ src/plugins/abrt-action-analyze-python
|
||||
src/plugins/abrt-action-analyze-vmcore
|
||||
src/plugins/abrt-action-analyze-xorg
|
||||
src/plugins/abrt-action-check-oops-for-hw-error
|
||||
+src/plugins/abrt-action-check-oops-for-alt-component
|
||||
src/plugins/abrt-action-generate-backtrace
|
||||
src/plugins/abrt-action-install-debuginfo-to-abrt-cache
|
||||
src/plugins/abrt-action-perform-ccpp-analysis
|
||||
diff --git a/abrt.spec.in b/abrt.spec.in
|
||||
index 08eb93f..c73eaf6 100644
|
||||
--- a/abrt.spec.in
|
||||
+++ b/abrt.spec.in
|
||||
@@ -975,6 +975,7 @@ killall abrt-dbus >/dev/null 2>&1 || :
|
||||
%endif
|
||||
%{_sbindir}/abrt-harvest-vmcore
|
||||
%{_bindir}/abrt-action-analyze-vmcore
|
||||
+%{_bindir}/abrt-action-check-oops-for-alt-component
|
||||
%{_bindir}/abrt-action-check-oops-for-hw-error
|
||||
%{_mandir}/man1/abrt-harvest-vmcore.1*
|
||||
%{_mandir}/man5/abrt-vmcore.conf.5*
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 2958807..b372e12 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -429,6 +429,7 @@ AC_CONFIG_FILES([
|
||||
src/plugins/abrt-action-install-debuginfo
|
||||
src/plugins/abrt-action-analyze-vmcore
|
||||
src/plugins/abrt-action-check-oops-for-hw-error
|
||||
+ src/plugins/abrt-action-check-oops-for-alt-component
|
||||
src/python-problem/Makefile
|
||||
src/python-problem/doc/Makefile
|
||||
src/python-problem/tests/Makefile
|
||||
diff --git a/examples/oops-32bit-graphics.right b/examples/oops-32bit-graphics.right
|
||||
new file mode 100644
|
||||
index 0000000..9891d02
|
||||
--- /dev/null
|
||||
+++ b/examples/oops-32bit-graphics.right
|
||||
@@ -0,0 +1,73 @@
|
||||
+abrt-dump-oops: Found oopses: 2
|
||||
+abrt-dump-oops: Kernel is tainted 'GD'
|
||||
+
|
||||
+Version: 4.0.3-201.fc21.i686+PAE
|
||||
+BUG: unable to handle kernel NULL pointer dereference at 00000008
|
||||
+IP: [<f83f9f24>] radeon_audio_detect+0x54/0x140 [radeon]
|
||||
+*pdpt = 0000000033260001 *pde = 0000000000000000
|
||||
+Oops: 0000 [#1] SMP
|
||||
+Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii
|
||||
+CPU: 0 PID: 222 Comm: plymouthd Not tainted 4.0.3-201.fc21.i686+PAE #1
|
||||
+Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006
|
||||
+task: f325f640 ti: f33b8000 task.ti: f33b8000
|
||||
+EIP: 0060:[<f83f9f24>] EFLAGS: 00010246 CPU: 0
|
||||
+EIP is at radeon_audio_detect+0x54/0x140 [radeon]
|
||||
+EAX: f6884240 EBX: f339dc00 ECX: 00000000 EDX: 00000000
|
||||
+ESI: f3364320 EDI: f681c000 EBP: f33b9d14 ESP: f33b9d04
|
||||
+ DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
|
||||
+CR0: 80050033 CR2: 00000008 CR3: 33209000 CR4: 000007f0
|
||||
+Stack:
|
||||
+ f6884240 f339dc00 00000001 f7374800 f33b9d48 f833bb78 00000001 f33be600
|
||||
+ 4ac04888 00000000 f33be600 f33b9d68 00000001 f681c000 f339dc30 f339dc00
|
||||
+ 00000001 f33b9d94 f809287b f3259580 f775d500 f325f640 f33b9fec f33e0540
|
||||
+Call Trace:
|
||||
+ [<f833bb78>] radeon_dvi_detect+0x2d8/0x4b0 [radeon]
|
||||
+ [<f809287b>] drm_helper_probe_single_connector_modes_merge_bits+0x27b/0x4a0 [drm_kms_helper]
|
||||
+ [<c0a8abc0>] ? mutex_lock+0x10/0x30
|
||||
+ [<f8092ab7>] drm_helper_probe_single_connector_modes+0x17/0x20 [drm_kms_helper]
|
||||
+ [<f80c5f2d>] drm_mode_getconnector+0x28d/0x320 [drm]
|
||||
+ [<f80c5ca0>] ? drm_mode_getcrtc+0xd0/0xd0 [drm]
|
||||
+ [<f80b81a5>] drm_ioctl+0x1f5/0x560 [drm]
|
||||
+ [<f80c5ca0>] ? drm_mode_getcrtc+0xd0/0xd0 [drm]
|
||||
+ [<c05064a7>] ? do_seccomp+0x2d7/0x6e0
|
||||
+ [<c07043a6>] ? _copy_to_user+0x26/0x30
|
||||
+ [<c0823931>] ? __pm_runtime_resume+0x51/0x70
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<f831503e>] radeon_drm_ioctl+0x3e/0x70 [radeon]
|
||||
+ [<f8315000>] ? 0xf8315000
|
||||
+ [<c05b69b2>] do_vfs_ioctl+0x322/0x540
|
||||
+ [<c0690c42>] ? inode_has_perm.isra.32+0x32/0x50
|
||||
+ [<c0690da7>] ? file_has_perm+0x97/0xa0
|
||||
+ [<c06919cb>] ? selinux_file_ioctl+0x4b/0xe0
|
||||
+ [<c05b6c30>] SyS_ioctl+0x60/0x90
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c0a8d0df>] sysenter_do_call+0x12/0x12
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+Code: 44 8b 93 0c 02 00 00 8b 02 8b b2 20 01 00 00 8b 78 18 8b 86 e4 00 00 00 85 c0 74 29 83 7d f0 01 74 35 8b 50 10 8b 8f 70 1c 00 00 <8b> 59 08 85 db 74 0c 89 f8 31 c9 ff d3 8b 86 e4 00 00 00 c7 40
|
||||
+EIP: [<f83f9f24>] radeon_audio_detect+0x54/0x140 [radeon] SS:ESP 0068:f33b9d04
|
||||
+CR2: 0000000000000008
|
||||
+
|
||||
+Version: 4.0.3-201.fc21.i686+PAE
|
||||
+WARNING: CPU: 1 PID: 263 at lib/list_debug.c:62 __list_del_entry+0xf4/0x100()
|
||||
+list_del corruption. next->prev should be f3215564, but was (null)
|
||||
+Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii
|
||||
+CPU: 1 PID: 263 Comm: plymouth Tainted: G D 4.0.3-201.fc21.i686+PAE #1
|
||||
+Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006
|
||||
+ c0d3c9c7 b9171629 00000000 f3337eb4 c0a878b6 f3337ef8 f3337ee8 c0466c1b
|
||||
+ c0c929c4 f3337f18 00000107 c0c91c9f 0000003e c0712794 0000003e c0712794
|
||||
+ 00000000 00000001 f32150a0 f3337f04 c0466c8e 00000009 f3337ef8 c0c929c4
|
||||
+Call Trace:
|
||||
+ [<c0a878b6>] dump_stack+0x41/0x52
|
||||
+ [<c0466c1b>] warn_slowpath_common+0x8b/0xc0
|
||||
+ [<c0712794>] ? __list_del_entry+0xf4/0x100
|
||||
+ [<c0712794>] ? __list_del_entry+0xf4/0x100
|
||||
+ [<c0466c8e>] warn_slowpath_fmt+0x3e/0x60
|
||||
+ [<c0712794>] __list_del_entry+0xf4/0x100
|
||||
+ [<c04e8a63>] cgroup_exit+0x33/0x100
|
||||
+ [<c0469208>] do_exit+0x2b8/0x950
|
||||
+ [<c0457a72>] ? __do_page_fault+0x252/0x4a0
|
||||
+ [<c0469917>] do_group_exit+0x37/0xa0
|
||||
+ [<c0469996>] SyS_exit_group+0x16/0x20
|
||||
+ [<c0a8d0df>] sysenter_do_call+0x12/0x12
|
||||
diff --git a/examples/oops-32bit-graphics.test b/examples/oops-32bit-graphics.test
|
||||
new file mode 100644
|
||||
index 0000000..da3d716
|
||||
--- /dev/null
|
||||
+++ b/examples/oops-32bit-graphics.test
|
||||
@@ -0,0 +1,71 @@
|
||||
+BUG: unable to handle kernel NULL pointer dereference at 00000008
|
||||
+IP: [<f83f9f24>] radeon_audio_detect+0x54/0x140 [radeon]
|
||||
+*pdpt = 0000000033260001 *pde = 0000000000000000
|
||||
+Oops: 0000 [#1] SMP
|
||||
+Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii
|
||||
+CPU: 0 PID: 222 Comm: plymouthd Not tainted 4.0.3-201.fc21.i686+PAE #1
|
||||
+Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006
|
||||
+task: f325f640 ti: f33b8000 task.ti: f33b8000
|
||||
+EIP: 0060:[<f83f9f24>] EFLAGS: 00010246 CPU: 0
|
||||
+EIP is at radeon_audio_detect+0x54/0x140 [radeon]
|
||||
+EAX: f6884240 EBX: f339dc00 ECX: 00000000 EDX: 00000000
|
||||
+ESI: f3364320 EDI: f681c000 EBP: f33b9d14 ESP: f33b9d04
|
||||
+ DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
|
||||
+CR0: 80050033 CR2: 00000008 CR3: 33209000 CR4: 000007f0
|
||||
+Stack:
|
||||
+ f6884240 f339dc00 00000001 f7374800 f33b9d48 f833bb78 00000001 f33be600
|
||||
+ 4ac04888 00000000 f33be600 f33b9d68 00000001 f681c000 f339dc30 f339dc00
|
||||
+ 00000001 f33b9d94 f809287b f3259580 f775d500 f325f640 f33b9fec f33e0540
|
||||
+Call Trace:
|
||||
+ [<f833bb78>] radeon_dvi_detect+0x2d8/0x4b0 [radeon]
|
||||
+ [<f809287b>] drm_helper_probe_single_connector_modes_merge_bits+0x27b/0x4a0 [drm_kms_helper]
|
||||
+ [<c0a8abc0>] ? mutex_lock+0x10/0x30
|
||||
+ [<f8092ab7>] drm_helper_probe_single_connector_modes+0x17/0x20 [drm_kms_helper]
|
||||
+ [<f80c5f2d>] drm_mode_getconnector+0x28d/0x320 [drm]
|
||||
+ [<f80c5ca0>] ? drm_mode_getcrtc+0xd0/0xd0 [drm]
|
||||
+ [<f80b81a5>] drm_ioctl+0x1f5/0x560 [drm]
|
||||
+ [<f80c5ca0>] ? drm_mode_getcrtc+0xd0/0xd0 [drm]
|
||||
+ [<c05064a7>] ? do_seccomp+0x2d7/0x6e0
|
||||
+ [<c07043a6>] ? _copy_to_user+0x26/0x30
|
||||
+ [<c0823931>] ? __pm_runtime_resume+0x51/0x70
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<f831503e>] radeon_drm_ioctl+0x3e/0x70 [radeon]
|
||||
+ [<f8315000>] ? 0xf8315000
|
||||
+ [<c05b69b2>] do_vfs_ioctl+0x322/0x540
|
||||
+ [<c0690c42>] ? inode_has_perm.isra.32+0x32/0x50
|
||||
+ [<c0690da7>] ? file_has_perm+0x97/0xa0
|
||||
+ [<c06919cb>] ? selinux_file_ioctl+0x4b/0xe0
|
||||
+ [<c05b6c30>] SyS_ioctl+0x60/0x90
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c0a8d0df>] sysenter_do_call+0x12/0x12
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+ [<c04c64a7>] ? posix_get_boottime+0x7/0x30
|
||||
+Code: 44 8b 93 0c 02 00 00 8b 02 8b b2 20 01 00 00 8b 78 18 8b 86 e4 00 00 00 85 c0 74 29 83 7d f0 01 74 35 8b 50 10 8b 8f 70 1c 00 00 <8b> 59 08 85 db 74 0c 89 f8 31 c9 ff d3 8b 86 e4 00 00 00 c7 40
|
||||
+EIP: [<f83f9f24>] radeon_audio_detect+0x54/0x140 [radeon] SS:ESP 0068:f33b9d04
|
||||
+CR2: 0000000000000008
|
||||
+---[ end trace c37768228d821e9f ]---
|
||||
+------------[ cut here ]------------
|
||||
+WARNING: CPU: 1 PID: 263 at lib/list_debug.c:62 __list_del_entry+0xf4/0x100()
|
||||
+list_del corruption. next->prev should be f3215564, but was (null)
|
||||
+Modules linked in: radeon i2c_algo_bit drm_kms_helper e1000 ttm e100 drm ata_generic pata_acpi mii
|
||||
+CPU: 1 PID: 263 Comm: plymouth Tainted: G D 4.0.3-201.fc21.i686+PAE #1
|
||||
+Hardware name: Dell Inc. Dimension 4700 /0M3918, BIOS A10 01/04/2006
|
||||
+ c0d3c9c7 b9171629 00000000 f3337eb4 c0a878b6 f3337ef8 f3337ee8 c0466c1b
|
||||
+ c0c929c4 f3337f18 00000107 c0c91c9f 0000003e c0712794 0000003e c0712794
|
||||
+ 00000000 00000001 f32150a0 f3337f04 c0466c8e 00000009 f3337ef8 c0c929c4
|
||||
+Call Trace:
|
||||
+ [<c0a878b6>] dump_stack+0x41/0x52
|
||||
+ [<c0466c1b>] warn_slowpath_common+0x8b/0xc0
|
||||
+ [<c0712794>] ? __list_del_entry+0xf4/0x100
|
||||
+ [<c0712794>] ? __list_del_entry+0xf4/0x100
|
||||
+ [<c0466c8e>] warn_slowpath_fmt+0x3e/0x60
|
||||
+ [<c0712794>] __list_del_entry+0xf4/0x100
|
||||
+ [<c04e8a63>] cgroup_exit+0x33/0x100
|
||||
+ [<c0469208>] do_exit+0x2b8/0x950
|
||||
+ [<c0457a72>] ? __do_page_fault+0x252/0x4a0
|
||||
+ [<c0469917>] do_group_exit+0x37/0xa0
|
||||
+ [<c0469996>] SyS_exit_group+0x16/0x20
|
||||
+ [<c0a8d0df>] sysenter_do_call+0x12/0x12
|
||||
+---[ end trace c37768228d821ea0 ]---
|
||||
+
|
||||
diff --git a/examples/oops-noveau.right b/examples/oops-noveau.right
|
||||
new file mode 100644
|
||||
index 0000000..d6c87a2
|
||||
--- /dev/null
|
||||
+++ b/examples/oops-noveau.right
|
||||
@@ -0,0 +1,39 @@
|
||||
+abrt-dump-oops: Found oopses: 1
|
||||
+
|
||||
+Version: 3.19.5-200.fc21.x86_64
|
||||
+WARNING: CPU: 0 PID: 16684 at arch/x86/mm/ioremap.c:197 __ioremap_caller+0x2aa/0x3a0()
|
||||
+Info: mapping multiple BARs. Your kernel is fine.
|
||||
+Modules linked in:
|
||||
+ bnep bluetooth rfkill xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack bridge stp llc snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec fuse snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer edac_core usblp kvm_amd snd serio_raw kvm k10temp edac_mce_amd sp5100_tco i2c_piix4 shpchp soundcore acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ata_generic pata_acpi nouveau video mxm_wmi wmi i2c_algo_bit drm_kms_helper ttm drm pata_atiixp r8169 mii
|
||||
+CPU: 0 PID: 16684 Comm: firefox Not tainted 3.19.5-200.fc21.x86_64 #1
|
||||
+Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./970A-DS3P, BIOS F1 04/08/2013
|
||||
+ 0000000000000000 0000000087b0a5f7 ffff8802e1b9b768 ffffffff8176ead5
|
||||
+ 0000000000000000 ffff8802e1b9b7c0 ffff8802e1b9b7a8 ffffffff8109bc1a
|
||||
+ ffff8802e1b9b7d8 ffffc9001c180000 00000000d206d000 0000000000100000
|
||||
+Call Trace:
|
||||
+ [<ffffffff8176ead5>] dump_stack+0x45/0x57
|
||||
+ [<ffffffff8109bc1a>] warn_slowpath_common+0x8a/0xc0
|
||||
+ [<ffffffff8109bca5>] warn_slowpath_fmt+0x55/0x70
|
||||
+ [<ffffffff810643aa>] __ioremap_caller+0x2aa/0x3a0
|
||||
+ [<ffffffff810644b7>] ioremap_nocache+0x17/0x20
|
||||
+ [<ffffffffa00e8036>] nouveau_barobj_ctor+0xd6/0x110 [nouveau]
|
||||
+ [<ffffffffa00e69d1>] nouveau_object_ctor+0x41/0xf0 [nouveau]
|
||||
+ [<ffffffffa00e80af>] nouveau_bar_alloc+0x3f/0x70 [nouveau]
|
||||
+ [<ffffffffa00e3795>] nouveau_gpuobj_create_+0x2a5/0x2f0 [nouveau]
|
||||
+ [<ffffffffa00e382c>] _nouveau_gpuobj_ctor+0x4c/0x70 [nouveau]
|
||||
+ [<ffffffffa00e69d1>] nouveau_object_ctor+0x41/0xf0 [nouveau]
|
||||
+ [<ffffffffa00e38ab>] nouveau_gpuobj_new+0x5b/0x80 [nouveau]
|
||||
+ [<ffffffffa0132173>] nouveau_vm_get+0x183/0x2f0 [nouveau]
|
||||
+ [<ffffffff811dd04a>] ? map_vm_area+0x2a/0x40
|
||||
+ [<ffffffffa0182744>] nouveau_bo_vma_add+0x34/0x90 [nouveau]
|
||||
+ [<ffffffffa017aee9>] nouveau_channel_prep+0x269/0x3b0 [nouveau]
|
||||
+ [<ffffffffa017b0b3>] nouveau_channel_new+0x83/0x800 [nouveau]
|
||||
+ [<ffffffffa01782fa>] ? nvif_device_init+0x3a/0x50 [nouveau]
|
||||
+ [<ffffffff811fbba6>] ? kmem_cache_alloc_trace+0x1f6/0x230
|
||||
+ [<ffffffffa0185770>] nouveau_abi16_ioctl_channel_alloc+0x120/0x3a0 [nouveau]
|
||||
+ [<ffffffffa0031a9f>] drm_ioctl+0x1df/0x680 [drm]
|
||||
+ [<ffffffff811cf196>] ? handle_mm_fault+0x8a6/0xff0
|
||||
+ [<ffffffffa0179222>] nouveau_drm_ioctl+0x72/0xd0 [nouveau]
|
||||
+ [<ffffffff8122e318>] do_vfs_ioctl+0x2f8/0x500
|
||||
+ [<ffffffff8122e5a1>] SyS_ioctl+0x81/0xa0
|
||||
+ [<ffffffff817752c9>] system_call_fastpath+0x12/0x17
|
||||
diff --git a/examples/oops-noveau.test b/examples/oops-noveau.test
|
||||
new file mode 100644
|
||||
index 0000000..8678a7d
|
||||
--- /dev/null
|
||||
+++ b/examples/oops-noveau.test
|
||||
@@ -0,0 +1,38 @@
|
||||
+------------[ cut here ]------------
|
||||
+WARNING: CPU: 0 PID: 16684 at arch/x86/mm/ioremap.c:197 __ioremap_caller+0x2aa/0x3a0()
|
||||
+Info: mapping multiple BARs. Your kernel is fine.
|
||||
+Modules linked in:
|
||||
+ bnep bluetooth rfkill xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack bridge stp llc snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec fuse snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer edac_core usblp kvm_amd snd serio_raw kvm k10temp edac_mce_amd sp5100_tco i2c_piix4 shpchp soundcore acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc ata_generic pata_acpi nouveau video mxm_wmi wmi i2c_algo_bit drm_kms_helper ttm drm pata_atiixp r8169 mii
|
||||
+CPU: 0 PID: 16684 Comm: firefox Not tainted 3.19.5-200.fc21.x86_64 #1
|
||||
+Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./970A-DS3P, BIOS F1 04/08/2013
|
||||
+ 0000000000000000 0000000087b0a5f7 ffff8802e1b9b768 ffffffff8176ead5
|
||||
+ 0000000000000000 ffff8802e1b9b7c0 ffff8802e1b9b7a8 ffffffff8109bc1a
|
||||
+ ffff8802e1b9b7d8 ffffc9001c180000 00000000d206d000 0000000000100000
|
||||
+Call Trace:
|
||||
+ [<ffffffff8176ead5>] dump_stack+0x45/0x57
|
||||
+ [<ffffffff8109bc1a>] warn_slowpath_common+0x8a/0xc0
|
||||
+ [<ffffffff8109bca5>] warn_slowpath_fmt+0x55/0x70
|
||||
+ [<ffffffff810643aa>] __ioremap_caller+0x2aa/0x3a0
|
||||
+ [<ffffffff810644b7>] ioremap_nocache+0x17/0x20
|
||||
+ [<ffffffffa00e8036>] nouveau_barobj_ctor+0xd6/0x110 [nouveau]
|
||||
+ [<ffffffffa00e69d1>] nouveau_object_ctor+0x41/0xf0 [nouveau]
|
||||
+ [<ffffffffa00e80af>] nouveau_bar_alloc+0x3f/0x70 [nouveau]
|
||||
+ [<ffffffffa00e3795>] nouveau_gpuobj_create_+0x2a5/0x2f0 [nouveau]
|
||||
+ [<ffffffffa00e382c>] _nouveau_gpuobj_ctor+0x4c/0x70 [nouveau]
|
||||
+ [<ffffffffa00e69d1>] nouveau_object_ctor+0x41/0xf0 [nouveau]
|
||||
+ [<ffffffffa00e38ab>] nouveau_gpuobj_new+0x5b/0x80 [nouveau]
|
||||
+ [<ffffffffa0132173>] nouveau_vm_get+0x183/0x2f0 [nouveau]
|
||||
+ [<ffffffff811dd04a>] ? map_vm_area+0x2a/0x40
|
||||
+ [<ffffffffa0182744>] nouveau_bo_vma_add+0x34/0x90 [nouveau]
|
||||
+ [<ffffffffa017aee9>] nouveau_channel_prep+0x269/0x3b0 [nouveau]
|
||||
+ [<ffffffffa017b0b3>] nouveau_channel_new+0x83/0x800 [nouveau]
|
||||
+ [<ffffffffa01782fa>] ? nvif_device_init+0x3a/0x50 [nouveau]
|
||||
+ [<ffffffff811fbba6>] ? kmem_cache_alloc_trace+0x1f6/0x230
|
||||
+ [<ffffffffa0185770>] nouveau_abi16_ioctl_channel_alloc+0x120/0x3a0 [nouveau]
|
||||
+ [<ffffffffa0031a9f>] drm_ioctl+0x1df/0x680 [drm]
|
||||
+ [<ffffffff811cf196>] ? handle_mm_fault+0x8a6/0xff0
|
||||
+ [<ffffffffa0179222>] nouveau_drm_ioctl+0x72/0xd0 [nouveau]
|
||||
+ [<ffffffff8122e318>] do_vfs_ioctl+0x2f8/0x500
|
||||
+ [<ffffffff8122e5a1>] SyS_ioctl+0x81/0xa0
|
||||
+ [<ffffffff817752c9>] system_call_fastpath+0x12/0x17
|
||||
+---[ end trace d72a6ef9c44bed66 ]---
|
||||
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
|
||||
index d90bb76..aa426ff 100644
|
||||
--- a/src/plugins/Makefile.am
|
||||
+++ b/src/plugins/Makefile.am
|
||||
@@ -74,6 +74,7 @@ PYTHON_FILES = \
|
||||
abrt-action-list-dsos \
|
||||
abrt-action-analyze-core \
|
||||
abrt-action-analyze-vulnerability \
|
||||
+ abrt-action-check-oops-for-alt-component.in \
|
||||
abrt-action-check-oops-for-hw-error.in \
|
||||
abrt-action-perform-ccpp-analysis.in \
|
||||
abrt-action-notify
|
||||
@@ -101,6 +102,7 @@ EXTRA_DIST = \
|
||||
if BUILD_ADDON_VMCORE
|
||||
bin_SCRIPTS += \
|
||||
abrt-action-analyze-vmcore \
|
||||
+ abrt-action-check-oops-for-alt-component \
|
||||
abrt-action-check-oops-for-hw-error
|
||||
|
||||
dist_events_DATA += \
|
||||
@@ -115,6 +117,7 @@ PYTHON_FILES += \
|
||||
EXTRA_DIST += \
|
||||
analyze_VMcore.xml.in \
|
||||
abrt-action-analyze-vmcore \
|
||||
+ abrt-action-check-oops-for-alt-component \
|
||||
abrt-action-check-oops-for-hw-error
|
||||
endif
|
||||
|
||||
diff --git a/src/plugins/abrt-action-check-oops-for-alt-component.in b/src/plugins/abrt-action-check-oops-for-alt-component.in
|
||||
new file mode 100644
|
||||
index 0000000..3dce42e
|
||||
--- /dev/null
|
||||
+++ b/src/plugins/abrt-action-check-oops-for-alt-component.in
|
||||
@@ -0,0 +1,93 @@
|
||||
+#!/usr/bin/python3 -u
|
||||
+
|
||||
+import sys
|
||||
+import os
|
||||
+import locale
|
||||
+import gettext
|
||||
+import hashlib
|
||||
+import re
|
||||
+
|
||||
+GETTEXT_PROGNAME = "abrt"
|
||||
+
|
||||
+_ = gettext.lgettext
|
||||
+
|
||||
+tags = [
|
||||
+"WARNING:",
|
||||
+"[ER]IP[^:]",
|
||||
+" \[<[a-f0-9]{8,16}>\]"
|
||||
+]
|
||||
+
|
||||
+checks = [
|
||||
+ ("i915", "xorg-x11-drv-intel"),
|
||||
+ ("nouveau", "xorg-x11-drv-nouveau"),
|
||||
+ ("radeon", "xorg-x11-drv-ati"),
|
||||
+ ("qxl", "xorg-x11-drv-qxl"),
|
||||
+]
|
||||
+
|
||||
+def check_tag(line):
|
||||
+ for tag in tags:
|
||||
+ if re.match(tag, line) is not None:
|
||||
+ for (mod, component) in checks:
|
||||
+ if re.search(mod, line) is not None:
|
||||
+ return component
|
||||
+ return None
|
||||
+
|
||||
+def get_new_component(filename):
|
||||
+ try:
|
||||
+ f = open(filename, "r")
|
||||
+ except IOError as e:
|
||||
+ return None
|
||||
+ for line in f:
|
||||
+ c = check_tag(line)
|
||||
+ if c is not None:
|
||||
+ f.close()
|
||||
+ return c
|
||||
+ f.close()
|
||||
+ return None
|
||||
+
|
||||
+def open_or_die(filename, mode):
|
||||
+ try:
|
||||
+ f = open(filename, mode)
|
||||
+ except IOError as e:
|
||||
+ sys.stderr.write(str(e) + "\n")
|
||||
+ sys.exit(1)
|
||||
+ return f
|
||||
+
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ try:
|
||||
+ locale.setlocale(locale.LC_ALL, "")
|
||||
+ except locale.Error:
|
||||
+ os.environ['LC_ALL'] = 'C'
|
||||
+ locale.setlocale(locale.LC_ALL, "")
|
||||
+
|
||||
+ # Defeat "AttributeError: 'module' object has no attribute 'nl_langinfo'"
|
||||
+ try:
|
||||
+ gettext.bind_textdomain_codeset(GETTEXT_PROGNAME,
|
||||
+ locale.nl_langinfo(locale.CODESET))
|
||||
+ except AttributeError:
|
||||
+ pass
|
||||
+
|
||||
+ gettext.bindtextdomain(GETTEXT_PROGNAME, '/usr/share/locale')
|
||||
+ gettext.textdomain(GETTEXT_PROGNAME)
|
||||
+
|
||||
+ #
|
||||
+ # Certain drivers are in the kernel but need to be tracked separtely
|
||||
+ # in other components. This fixes those components.
|
||||
+ #
|
||||
+
|
||||
+ new_component = get_new_component("backtrace")
|
||||
+ if new_component is None:
|
||||
+ sys.exit(0)
|
||||
+
|
||||
+ print("Oops looks like a problem in kernel module, new component {0}"
|
||||
+ .format(new_component))
|
||||
+
|
||||
+ f = open_or_die("component", "w")
|
||||
+ f.write(new_component)
|
||||
+ f.close()
|
||||
+
|
||||
+ # keep kernel maint in the loop even if the component gets changed
|
||||
+ f = open_or_die("extra-cc", "w")
|
||||
+ f.write("kernel-maint@redhat.com")
|
||||
+ f.close()
|
||||
diff --git a/src/plugins/koops_event.conf b/src/plugins/koops_event.conf
|
||||
index a811077..2379d7d 100644
|
||||
--- a/src/plugins/koops_event.conf
|
||||
+++ b/src/plugins/koops_event.conf
|
||||
@@ -8,6 +8,9 @@ EVENT=post-create type=Kerneloops
|
||||
abrt-action-check-oops-for-hw-error
|
||||
fi
|
||||
{
|
||||
+ abrt-action-check-oops-for-alt-component || true
|
||||
+ } &&
|
||||
+ {
|
||||
# run abrt-action-analyze-oops only if check-hw-error didn't create the
|
||||
# required files
|
||||
if test ! -f uuid -a ! -f duphash; then
|
||||
diff --git a/src/plugins/vmcore_event.conf b/src/plugins/vmcore_event.conf
|
||||
index 43fa7f0..6870332 100644
|
||||
--- a/src/plugins/vmcore_event.conf
|
||||
+++ b/src/plugins/vmcore_event.conf
|
||||
@@ -29,6 +29,7 @@ EVENT=post-create type=vmcore
|
||||
# Do not fail the event (->do not delete problem dir)
|
||||
# if check-oops-for-hw-error exits nonzero:
|
||||
{ abrt-action-check-oops-for-hw-error || true; }
|
||||
+ { abrt-action-check-oops-for-alt-component || true; }
|
||||
|
||||
# analyze
|
||||
EVENT=analyze_VMcore type=vmcore
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From 96c50b9c18aabf675e23f6df3ec584610ae5019a Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Fri, 17 Jul 2015 10:25:50 +0200
|
||||
Subject: [PATCH] ccpp: do not crash if generate_core_backtrace fails
|
||||
|
||||
Add a missing return statement in the error code execution path.
|
||||
|
||||
Related: rhbz#1243791
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-hook-ccpp.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
|
||||
index 8ccef06..809b45e 100644
|
||||
--- a/src/hooks/abrt-hook-ccpp.c
|
||||
+++ b/src/hooks/abrt-hook-ccpp.c
|
||||
@@ -426,6 +426,7 @@ static void create_core_backtrace(pid_t tid, const char *executable, int signal_
|
||||
{
|
||||
log("Failed to create core_backtrace: %s", error_message);
|
||||
free(error_message);
|
||||
+ return;
|
||||
}
|
||||
|
||||
dd_save_text(dd, FILENAME_CORE_BACKTRACE, core_bt);
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
From cdc5824e4488d419616cdfaa87ac5f6cf2a4dfea Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Fri, 17 Jul 2015 10:42:01 +0200
|
||||
Subject: [PATCH] applet: do not crash if the new problem has no command_line
|
||||
|
||||
Related: rhbz#1243791
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/applet/applet.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/applet/applet.c b/src/applet/applet.c
|
||||
index 296e1b4..5bdedc1 100644
|
||||
--- a/src/applet/applet.c
|
||||
+++ b/src/applet/applet.c
|
||||
@@ -661,7 +661,11 @@ static void notify_problem_list(GList *problems)
|
||||
app = problem_create_app_from_env (problem_info_get_env(pi), problem_info_get_pid(pi));
|
||||
|
||||
if (!app)
|
||||
- app = problem_create_app_from_cmdline (problem_info_get_command_line(pi));
|
||||
+ {
|
||||
+ const char *const cmd_line = problem_info_get_command_line(pi);
|
||||
+ if (cmd_line != NULL)
|
||||
+ app = problem_create_app_from_cmdline(cmd_line);
|
||||
+ }
|
||||
|
||||
/* For each problem we'll need to know:
|
||||
* - Whether or not the crash happened in an “app”
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
From 5349718f775c39124e789457d2c012ac23c81619 Mon Sep 17 00:00:00 2001
|
||||
From: "knoha@redhat.com" <knoha@redhat.com>
|
||||
Date: Fri, 24 Jul 2015 07:56:02 +0200
|
||||
Subject: [PATCH] abrt-merge-pstoreoops: merge files in descending order
|
||||
|
||||
fs/pstore reads the data from kmsg_dump_get_buffer(), which starts at
|
||||
the end of the kmsg buffer, in a while loop and increases Part no. in
|
||||
each iteration.
|
||||
|
||||
Related: rhbz#1233662
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-merge-pstoreoops.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/hooks/abrt-merge-pstoreoops.c b/src/hooks/abrt-merge-pstoreoops.c
|
||||
index 6fc3109..36f1e0b 100644
|
||||
--- a/src/hooks/abrt-merge-pstoreoops.c
|
||||
+++ b/src/hooks/abrt-merge-pstoreoops.c
|
||||
@@ -64,9 +64,9 @@ int compare_oops_texts(const void *a, const void *b)
|
||||
return -1;
|
||||
if (aa->panic_no > bb->panic_no)
|
||||
return 1;
|
||||
- if (aa->part_no < bb->part_no)
|
||||
+ if (aa->part_no > bb->part_no)
|
||||
return -1;
|
||||
- return (aa->part_no > bb->part_no);
|
||||
+ return (aa->part_no < bb->part_no);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From 03be49244ab5f4fdd7521254dd6afedbd277ceea Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 28 Jul 2015 13:17:25 +0200
|
||||
Subject: [PATCH] abrt-auto-reporting: fix related to conditional compilation
|
||||
|
||||
We discovered that conditional compilation in abrt-auto-reporting does not
|
||||
work. We forgot add -DAUTHENTICATED_AUTOREPORTING=1 flag if
|
||||
AUTHENTICATED_AUTOREPORTING is enabled.
|
||||
|
||||
Related to rhbz#1191572
|
||||
---
|
||||
src/daemon/Makefile.am | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/daemon/Makefile.am b/src/daemon/Makefile.am
|
||||
index a8f3fa2..563923a 100644
|
||||
--- a/src/daemon/Makefile.am
|
||||
+++ b/src/daemon/Makefile.am
|
||||
@@ -122,6 +122,11 @@ abrt_auto_reporting_CPPFLAGS = \
|
||||
-I$(srcdir)/../lib \
|
||||
$(LIBREPORT_CFLAGS) \
|
||||
-D_GNU_SOURCE
|
||||
+
|
||||
+if AUTHENTICATED_AUTOREPORTING
|
||||
+abrt_auto_reporting_CPPFLAGS += -DAUTHENTICATED_AUTOREPORTING=1
|
||||
+endif
|
||||
+
|
||||
abrt_auto_reporting_LDADD = \
|
||||
../lib/libabrt.la \
|
||||
$(LIBREPORT_LIBS)
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From f1e5d631932a05e3147b6af73ce1230150f9f979 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 28 Jul 2015 16:20:47 +0200
|
||||
Subject: [PATCH] doc: fix related to conditional compilation of man page
|
||||
|
||||
abrt-auto-reporting.txt is a copy of either
|
||||
abrt-auto-reporting-authenticated.txt or
|
||||
abrt-auto-reporting-unauthenticated.txt. abrt-auto-reporting.txt file always
|
||||
exists because MAN1_TXT variable contains it and is distributed (the file is listed
|
||||
in the EXTRA_DIST variable). It would be difficult to ensure
|
||||
to have abrt-auto-reporting.txt in the MAN1_TXT and exclude it
|
||||
from the EXTRA_DIST. So enforce copy, to get the right version of man page, seems
|
||||
like the easiest way.
|
||||
|
||||
Related to rhbz#1191572
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/Makefile.am | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/doc/Makefile.am b/doc/Makefile.am
|
||||
index f39c3bf..fdd08cf 100644
|
||||
--- a/doc/Makefile.am
|
||||
+++ b/doc/Makefile.am
|
||||
@@ -82,6 +82,15 @@ MAN_SOURCE =
|
||||
MAN_SOURCE += abrt-auto-reporting-authenticated.txt
|
||||
MAN_SOURCE += abrt-auto-reporting-unauthenticated.txt
|
||||
|
||||
+# abrt-auto-reporting.txt is a copy of either
|
||||
+# abrt-auto-reporting-authenticated.txt or
|
||||
+# abrt-auto-reporting-unauthenticated.txt. abrt-auto-reporting.txt file always
|
||||
+# exists because MAN1_TXT variable contains it and is distributed (the file is listed
|
||||
+# in the EXTRA_DIST variable). It would be difficult to ensure
|
||||
+# to have abrt-auto-reporting.txt in the MAN1_TXT and exclude it
|
||||
+# from the EXTRA_DIST. So enforce copy, to get the right version of man page, seems
|
||||
+# like the easiest way.
|
||||
+.PHONY: abrt-auto-reporting.txt
|
||||
if AUTHENTICATED_AUTOREPORTING
|
||||
abrt-auto-reporting.txt: abrt-auto-reporting-authenticated.txt
|
||||
else
|
||||
--
|
||||
2.4.3
|
||||
|
||||
99
0012-dbus-api-unify-reporting-of-errors.patch
Normal file
99
0012-dbus-api-unify-reporting-of-errors.patch
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
From 0c3a29b70992627481af789dab50247728bcedf1 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Tue, 11 Aug 2015 09:54:55 +0200
|
||||
Subject: [PATCH] dbus-api: unify reporting of errors
|
||||
|
||||
User ERR_PTR for failures in all functions because some of the functions
|
||||
use NULL as a valid response (NULL is an empty GList).
|
||||
|
||||
Related: rhbz#1224984
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/include/libabrt.h | 16 +++++++++-------
|
||||
src/lib/problem_api_dbus.c | 2 +-
|
||||
2 files changed, 10 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/include/libabrt.h b/src/include/libabrt.h
|
||||
index 4e73a0d..da565f9 100644
|
||||
--- a/src/include/libabrt.h
|
||||
+++ b/src/include/libabrt.h
|
||||
@@ -163,7 +163,7 @@ void koops_print_suspicious_strings_filtered(const regex_t **filterout);
|
||||
|
||||
Requires authorization
|
||||
|
||||
- @return 0 if successfull non-zeru on failure
|
||||
+ @return 0 if successful; non-zero on failure
|
||||
*/
|
||||
int chown_dir_over_dbus(const char *problem_dir_path);
|
||||
|
||||
@@ -181,7 +181,7 @@ int test_exist_over_dbus(const char *problem_id, const char *element_name);
|
||||
|
||||
Might require authorization
|
||||
|
||||
- @return Positive number if such the proble is complete, 0 if doesn't and negative number if an error occurs.
|
||||
+ @return Positive number if the problem is complete, 0 if doesn't and negative number if an error occurs.
|
||||
*/
|
||||
int dbus_problem_is_complete(const char *problem_id);
|
||||
|
||||
@@ -198,7 +198,8 @@ char *load_text_over_dbus(const char *problem_id, const char *element_name);
|
||||
@brief Delets multiple problems specified by their id (as returned from problem_data_save)
|
||||
|
||||
@param problem_dir_paths List of problem ids
|
||||
- @return 0 if operation was successfull, non-zero on failure
|
||||
+
|
||||
+ @return 0 if operation was successful, non-zero on failure
|
||||
*/
|
||||
|
||||
int delete_problem_dirs_over_dbus(const GList *problem_dir_paths);
|
||||
@@ -206,21 +207,21 @@ int delete_problem_dirs_over_dbus(const GList *problem_dir_paths);
|
||||
/**
|
||||
@brief Fetches given problem elements for specified problem id
|
||||
|
||||
- @return on failures returns non zero value and emits error message
|
||||
+ @return returns non-zero value on failures and prints error message
|
||||
*/
|
||||
int fill_problem_data_over_dbus(const char *problem_dir_path, const char **elements, problem_data_t *problem_data);
|
||||
|
||||
/**
|
||||
@brief Fetches problem information for specified problem id
|
||||
|
||||
- @return problem_data_t or NULL on failure
|
||||
+ @return a valid pointer to problem_data_t or ERR_PTR on failure
|
||||
*/
|
||||
problem_data_t *get_problem_data_dbus(const char *problem_dir_path);
|
||||
|
||||
/**
|
||||
@brief Fetches full problem data for specified problem id
|
||||
|
||||
- @return problem_data_t or ERR_PTR on failure
|
||||
+ @return a valid pointer to problem_data_t or ERR_PTR on failure
|
||||
*/
|
||||
problem_data_t *get_full_problem_data_over_dbus(const char *problem_dir_path);
|
||||
|
||||
@@ -228,7 +229,8 @@ problem_data_t *get_full_problem_data_over_dbus(const char *problem_dir_path);
|
||||
@brief Fetches all problems from problem database
|
||||
|
||||
@param authorize If set to true will try to fetch even problems owned by other users (will require root authorization over policy kit)
|
||||
- @return List of problem ids or NULL on failure
|
||||
+
|
||||
+ @return List of problem ids or ERR_PTR on failure (NULL is an empty list)
|
||||
*/
|
||||
GList *get_problems_over_dbus(bool authorize);
|
||||
|
||||
diff --git a/src/lib/problem_api_dbus.c b/src/lib/problem_api_dbus.c
|
||||
index ce5c47b..0bf86e2 100644
|
||||
--- a/src/lib/problem_api_dbus.c
|
||||
+++ b/src/lib/problem_api_dbus.c
|
||||
@@ -165,7 +165,7 @@ problem_data_t *get_problem_data_dbus(const char *problem_dir_path)
|
||||
{
|
||||
error_msg(_("Can't get problem data from abrt-dbus"));
|
||||
problem_data_free(pd);
|
||||
- return NULL;
|
||||
+ return ERR_PTR;
|
||||
}
|
||||
|
||||
return pd;
|
||||
--
|
||||
2.4.3
|
||||
|
||||
56
0013-cli-fix-testing-of-DBus-API-return-codes.patch
Normal file
56
0013-cli-fix-testing-of-DBus-API-return-codes.patch
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
From a4412db28021552e1399695b3f5435ccbb03bf08 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Tue, 11 Aug 2015 10:01:53 +0200
|
||||
Subject: [PATCH] cli: fix testing of DBus API return codes
|
||||
|
||||
The DBus wrapper functions uses ERR_PTR to report an error, so the
|
||||
callers has to test the returned pointers for NULL and for ERR_PTR.
|
||||
|
||||
Related: rhbz#1224984
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/cli/list.c | 3 +++
|
||||
src/cli/status.c | 5 ++++-
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/cli/list.c b/src/cli/list.c
|
||||
index 68dda47..d069695 100644
|
||||
--- a/src/cli/list.c
|
||||
+++ b/src/cli/list.c
|
||||
@@ -36,6 +36,9 @@ static problem_data_t *load_problem_data(const char *problem_id)
|
||||
|
||||
/* First, check if there is a problem with the passed id */
|
||||
GList *problems = get_problems_over_dbus(g_cli_authenticate);
|
||||
+ if (problems == ERR_PTR)
|
||||
+ return NULL;
|
||||
+
|
||||
GList *item = g_list_find_custom(problems, problem_id, (GCompareFunc)strcmp);
|
||||
|
||||
/* (git requires at least 5 char hash prefix, we do the same) */
|
||||
diff --git a/src/cli/status.c b/src/cli/status.c
|
||||
index 0635289..3620cea 100644
|
||||
--- a/src/cli/status.c
|
||||
+++ b/src/cli/status.c
|
||||
@@ -27,6 +27,9 @@ static unsigned int count_problem_dirs(unsigned long since)
|
||||
unsigned count = 0;
|
||||
|
||||
GList *problems = get_problems_over_dbus(g_cli_authenticate);
|
||||
+ if (problems == ERR_PTR)
|
||||
+ return count;
|
||||
+
|
||||
for (GList *iter = problems; iter != NULL; iter = g_list_next(iter))
|
||||
{
|
||||
const char *problem_id = (const char *)iter->data;
|
||||
@@ -37,7 +40,7 @@ static unsigned int count_problem_dirs(unsigned long since)
|
||||
}
|
||||
|
||||
char *time_str = load_text_over_dbus(problem_id, FILENAME_LAST_OCCURRENCE);
|
||||
- if (time_str == NULL)
|
||||
+ if (time_str == ERR_PTR || time_str == NULL)
|
||||
{
|
||||
log_debug("Not counting problem %s: failed to get time element", problem_id);
|
||||
continue;
|
||||
--
|
||||
2.4.3
|
||||
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
From affc4b3e644931820180aec57e128106e44b626c Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 11 Aug 2015 16:17:40 +0200
|
||||
Subject: [PATCH] ccpp: fix comment related to 'MakeCompatCore' option in
|
||||
CCpp.conf
|
||||
|
||||
The comment fits only on the default core_pattern template.
|
||||
If the core_pattern is not default, the comment does not fit.
|
||||
|
||||
Related to rhbz#1252384
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/abrt-CCpp.conf.txt | 9 +++++++--
|
||||
src/hooks/CCpp.conf | 9 +++++++--
|
||||
2 files changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/doc/abrt-CCpp.conf.txt b/doc/abrt-CCpp.conf.txt
|
||||
index 498d53d..cf9b213 100644
|
||||
--- a/doc/abrt-CCpp.conf.txt
|
||||
+++ b/doc/abrt-CCpp.conf.txt
|
||||
@@ -11,8 +11,13 @@ The configuration file consists of items in the format "Option = Value".
|
||||
Ithe following items are recognized:
|
||||
|
||||
MakeCompatCore = 'yes' / 'no' ...::
|
||||
- If you also want to dump file named "core"
|
||||
- in crashed process' current dir, set to "yes".
|
||||
+ CCpp hook writes its template to the "/proc/sys/kernel/core_pattern" file
|
||||
+ and stores the original template in the "/var/run/abrt/saved_core_pattern"
|
||||
+ file. If you want CCpp hook to create a core dump file named according to
|
||||
+ the original template as well, set 'MakeCompatCore' to 'yes'.
|
||||
+ If the original template string starts with "|", the string "core" is used
|
||||
+ instead of the template.
|
||||
+ For more information about naming core dump files see 'man 5 core'.
|
||||
|
||||
SaveBinaryImage = 'yes' / 'no' ...::
|
||||
Do you want a copy of crashed binary be saved?
|
||||
diff --git a/src/hooks/CCpp.conf b/src/hooks/CCpp.conf
|
||||
index 92d7438..03b9b03 100644
|
||||
--- a/src/hooks/CCpp.conf
|
||||
+++ b/src/hooks/CCpp.conf
|
||||
@@ -1,7 +1,12 @@
|
||||
# Configuration file for CCpp hook
|
||||
|
||||
-# If you also want to dump file named "core"
|
||||
-# in crashed process' current dir, set to "yes"
|
||||
+# CCpp hook writes its template to the "/proc/sys/kernel/core_pattern" file
|
||||
+# and stores the original template in the "/var/run/abrt/saved_core_pattern"
|
||||
+# file. If you want CCpp hook to create a core dump file named according to
|
||||
+# the original template as well, set 'MakeCompatCore' to 'yes'.
|
||||
+# If the original template string starts with "|", the string "core" is used
|
||||
+# instead of the template.
|
||||
+# For more information about naming core dump files see 'man 5 core'.
|
||||
MakeCompatCore = yes
|
||||
|
||||
# Do you want a copy of crashed binary be saved?
|
||||
--
|
||||
2.4.3
|
||||
|
||||
37
0015-ccpp-use-global-TID.patch
Normal file
37
0015-ccpp-use-global-TID.patch
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
From fbb66dec11a7e8503b0cfb9b2c85e94f6b00f4a3 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 12 Aug 2015 17:40:12 +0200
|
||||
Subject: [PATCH] ccpp: use global TID
|
||||
|
||||
'%i' is TID of the thread from the crashed process's PID namespace but
|
||||
abrt-hook-ccpp is run by kernel in the init PID namespace, so '%i'
|
||||
is TID of a completely unrelated process.
|
||||
|
||||
For mode details see 'man 5 core'.
|
||||
|
||||
Related: rhbz#1252590
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-install-ccpp-hook.in | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/hooks/abrt-install-ccpp-hook.in b/src/hooks/abrt-install-ccpp-hook.in
|
||||
index 13832ab..707c57d 100755
|
||||
--- a/src/hooks/abrt-install-ccpp-hook.in
|
||||
+++ b/src/hooks/abrt-install-ccpp-hook.in
|
||||
@@ -11,9 +11,9 @@ SAVED_PATTERN_DIR="@VAR_RUN@/abrt"
|
||||
SAVED_PATTERN_FILE="@VAR_RUN@/abrt/saved_core_pattern"
|
||||
HOOK_BIN="@libexecdir@/abrt-hook-ccpp"
|
||||
# Must match percent_specifiers[] order in abrt-hook-ccpp.c:
|
||||
-PATTERN="|$HOOK_BIN %s %c %p %u %g %t %e %P %i"
|
||||
+PATTERN="|$HOOK_BIN %s %c %p %u %g %t %e %P %I"
|
||||
# Same, but with bogus "executable name" parameter
|
||||
-PATTERN1="|$HOOK_BIN %s %c %p %u %g %t e %P %i"
|
||||
+PATTERN1="|$HOOK_BIN %s %c %p %u %g %t e %P %I"
|
||||
|
||||
# core_pipe_limit specifies how many dump_helpers can run at the same time
|
||||
# 0 - means unlimited, but it's not guaranteed that /proc/<pid> of crashing
|
||||
--
|
||||
2.4.3
|
||||
|
||||
31
0016-a-a-s-p-d-add-bash-on-the-package-blacklist.patch
Normal file
31
0016-a-a-s-p-d-add-bash-on-the-package-blacklist.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
From fba54d523b5047cef9f14cdc174fa914f0731c2b Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Thu, 20 Aug 2015 09:40:59 +0200
|
||||
Subject: [PATCH] a-a-s-p-d: add bash on the package blacklist
|
||||
|
||||
In case of this package, the reported data doesn't yield sufficient information
|
||||
to solve a bug.
|
||||
|
||||
Related to rhbz#1250379
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/daemon/abrt-action-save-package-data.conf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
|
||||
index 27b9607..0129399 100644
|
||||
--- a/src/daemon/abrt-action-save-package-data.conf
|
||||
+++ b/src/daemon/abrt-action-save-package-data.conf
|
||||
@@ -7,7 +7,7 @@ OpenGPGCheck = yes
|
||||
|
||||
# Blacklisted packages
|
||||
#
|
||||
-BlackList = nspluginwrapper, valgrind, strace, mono-core, firefox
|
||||
+BlackList = nspluginwrapper, valgrind, strace, mono-core, firefox, bash
|
||||
|
||||
# Process crashes in executables which do not belong to any package?
|
||||
#
|
||||
--
|
||||
2.5.0
|
||||
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
From c0440e41e6739f26df540aed167dc00c59eebeb0 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Thu, 20 Aug 2015 11:15:59 +0200
|
||||
Subject: [PATCH] cli: don't start reporting of not-reportable problems
|
||||
|
||||
If the reported problem data contains 'not-reportable' element, the
|
||||
reporting process fails unexpectedly and after the reporter already spent some
|
||||
time on it.
|
||||
|
||||
This commit ensures that the reporting process won't start, so
|
||||
abrt-cli's behaviour will be consistent with ABRT GUI.
|
||||
|
||||
However, this is not an ideal solution because we might want to allow
|
||||
the reporter to report the problem directly to developers via e-mail.
|
||||
|
||||
Closes #986
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/cli/report.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/src/cli/report.c b/src/cli/report.c
|
||||
index 19b4c51..cc4035e 100644
|
||||
--- a/src/cli/report.c
|
||||
+++ b/src/cli/report.c
|
||||
@@ -36,6 +36,15 @@ int _cmd_report(const char **dirs_strv, int remove)
|
||||
continue;
|
||||
}
|
||||
|
||||
+ const int not_reportable = test_exist_over_dbus(real_problem_id, FILENAME_NOT_REPORTABLE);
|
||||
+ if (not_reportable != 0)
|
||||
+ {
|
||||
+ error_msg(_("Problem '%s' cannot be reported"), real_problem_id);
|
||||
+ free(real_problem_id);
|
||||
+ ++ret;
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
const int res = chown_dir_over_dbus(real_problem_id);
|
||||
if (res != 0)
|
||||
{
|
||||
--
|
||||
2.5.0
|
||||
|
||||
317
0018-introduce-bodhi2-to-abrt-bodhi.patch
Normal file
317
0018-introduce-bodhi2-to-abrt-bodhi.patch
Normal file
|
|
@ -0,0 +1,317 @@
|
|||
From fe2db75f3c7fc37e4754241258e2c14c8d7d2826 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Tue, 25 Aug 2015 16:03:51 +0200
|
||||
Subject: [PATCH] introduce bodhi2 to abrt-bodhi
|
||||
|
||||
Resolves: rhbz#1256493
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
configure.ac | 1 +
|
||||
src/plugins/Makefile.am | 2 +
|
||||
src/plugins/bodhi.c | 197 +++++++++++++++++++++++++++---------------------
|
||||
3 files changed, 114 insertions(+), 86 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b372e12..1013e3b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -376,6 +376,7 @@ PKG_CHECK_MODULES([JSON_C], [json], [
|
||||
if test -z "$NO_BODHI"
|
||||
then
|
||||
PKG_CHECK_MODULES([LIBREPORT_WEB], [libreport-web])
|
||||
+PKG_CHECK_MODULES([HAWKEY], [hawkey])
|
||||
AM_CONDITIONAL(BUILD_BODHI, true)
|
||||
else
|
||||
AM_CONDITIONAL(BUILD_BODHI, false)
|
||||
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
|
||||
index aa426ff..1c1ff8a 100644
|
||||
--- a/src/plugins/Makefile.am
|
||||
+++ b/src/plugins/Makefile.am
|
||||
@@ -366,10 +366,12 @@ abrt_bodhi_SOURCES = \
|
||||
$(LIBREPORT_WEB_CFLAGS) \
|
||||
$(JSON_C_CFLAGS) \
|
||||
$(RPM_CFLAGS) \
|
||||
+ $(HAWKEY_CFLAGS) \
|
||||
-D_GNU_SOURCE
|
||||
abrt_bodhi_LDADD = \
|
||||
$(JSON_C_LIBS) \
|
||||
$(RPM_LIBS) \
|
||||
+ $(HAWKEY_LIBS) \
|
||||
$(LIBREPORT_LIBS) \
|
||||
$(LIBREPORT_WEB_LIBS)
|
||||
endif
|
||||
diff --git a/src/plugins/bodhi.c b/src/plugins/bodhi.c
|
||||
index fcdbd83..831f5ff 100644
|
||||
--- a/src/plugins/bodhi.c
|
||||
+++ b/src/plugins/bodhi.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <rpm/rpmcli.h>
|
||||
#include <rpm/rpmdb.h>
|
||||
#include <rpm/rpmpgp.h>
|
||||
+#include <hawkey/util.h>
|
||||
|
||||
#include <libreport/internal_libreport.h>
|
||||
#include <libreport/libreport_curl.h>
|
||||
@@ -32,85 +33,103 @@
|
||||
/* bodhi returns json structure
|
||||
|
||||
{
|
||||
- "num_items":2,
|
||||
- "title":"2 updats found",
|
||||
- "tg_flash":null,
|
||||
- "updates":[
|
||||
- {
|
||||
- "status":"stable",
|
||||
- "close_bugs":true,
|
||||
- "request":null,
|
||||
- "date_submitted":"2011-03-18 17:25:14",
|
||||
- "unstable_karma":-3,
|
||||
- "submitter":"twaugh",
|
||||
- "critpath":false,
|
||||
- "approved":null,
|
||||
- "stable_karma":2,
|
||||
- "date_pushed":"2011-03-19 05:34:27",
|
||||
- "builds":[
|
||||
- {
|
||||
- "nvr":"system-config-printer-1.3.2-1.fc15",
|
||||
- "package":{
|
||||
- "suggest_reboot":false,
|
||||
- "committers":[
|
||||
- "twaugh",
|
||||
- "jpopelka"
|
||||
- ],
|
||||
- "name":"system-config-printer"
|
||||
- }
|
||||
- },
|
||||
- {
|
||||
- ....
|
||||
- }
|
||||
- ],
|
||||
- "title":"system-config-printer-1.3.2-1.fc15",
|
||||
- "notes":"This update fixes several bugs and re-enables translations that were accidentally disabled.",
|
||||
- "date_modified":null,
|
||||
- "nagged":null,
|
||||
- "bugs":[
|
||||
- {
|
||||
- "bz_id":685098,
|
||||
- "security":false,
|
||||
- "parent":false,
|
||||
- "title":"[abrt] system-config-printer-1.3.1-1.fc15: authconn.py:197:_connect:RuntimeError: failed to connect to server"
|
||||
- },
|
||||
- {
|
||||
- ...
|
||||
- }
|
||||
- ],
|
||||
- "comments":[
|
||||
- {
|
||||
- "group":null,
|
||||
- "karma":0,
|
||||
- "anonymous":false,
|
||||
- "author":"bodhi",
|
||||
- "timestamp":"2011-03-18 17:26:34",
|
||||
- "text":"This update has been submitted for testing by twaugh. "
|
||||
- },
|
||||
- {
|
||||
- ...
|
||||
- }
|
||||
- ],
|
||||
- "critpath_approved":false,
|
||||
- "updateid":"FEDORA-2011-3596",
|
||||
- "karma":0,
|
||||
- "release":{
|
||||
- "dist_tag":"dist-f15",
|
||||
- "id_prefix":"FEDORA",
|
||||
- "locked":false,
|
||||
- "name":"F15",
|
||||
- "long_name":"Fedora 15"
|
||||
- },
|
||||
- "type":"bugfix"
|
||||
- },
|
||||
- {
|
||||
- ...
|
||||
- }
|
||||
- ]
|
||||
+ "rows_per_page": 20,
|
||||
+ "total": 1,
|
||||
+ "chrome": true,
|
||||
+ "display_user": true,
|
||||
+ "pages": 1,
|
||||
+ "updates": [
|
||||
+ {
|
||||
+ "close_bugs": true,
|
||||
+ "old_updateid": "FEDORA-2015-13720",
|
||||
+ "pushed": true,
|
||||
+ "require_testcases": false,
|
||||
+ "critpath": false,
|
||||
+ "date_approved": null,
|
||||
+ "stable_karma": null,
|
||||
+ "date_pushed": "2015-08-19 04:49:00",
|
||||
+ "requirements": null,
|
||||
+ "severity": "unspecified",
|
||||
+ "title": "hwloc-1.11.0-3.fc22",
|
||||
+ "suggest": "unspecified",
|
||||
+ "require_bugs": false,
|
||||
+ "comments": [
|
||||
+ {
|
||||
+ "bug_feedback": [],
|
||||
+ "user_id": 91,
|
||||
+ "text": "This update has been submitted for testing by jhladky. ",
|
||||
+ "testcase_feedback": [],
|
||||
+ "karma_critpath": 0,
|
||||
+ "update": 21885,
|
||||
+ "update_id": 21885,
|
||||
+ "karma": 0,
|
||||
+ "anonymous": false,
|
||||
+ "timestamp": "2015-08-18 13:38:35",
|
||||
+ "id": 166016,
|
||||
+ "user": {"stacks": [],
|
||||
+ "name": "bodhi",
|
||||
+ "avatar": "https://apps.fedoraproject.org/img/icons/bodhi-24.png"}
|
||||
+ },
|
||||
+ {
|
||||
+ ...
|
||||
+ }
|
||||
+ ],
|
||||
+ "updateid": "FEDORA-2015-13720",
|
||||
+ "cves": [],
|
||||
+ "type": "bugfix",
|
||||
+ "status": "testing",
|
||||
+ "date_submitted": "2015-08-18 13:37:26",
|
||||
+ "unstable_karma": null,
|
||||
+ "submitter": "jhladky",
|
||||
+ "user":
|
||||
+ {
|
||||
+ "stacks": [],
|
||||
+ "buildroot_overrides": [],
|
||||
+ "name": "jhladky",
|
||||
+ "avatar": "https://seccdn.libravatar.org/avatar/b838b78fcf707a13cdaeb1c846d514e614d617cbf2c106718e71cb397607f59b?s=24&d=retro"
|
||||
+ },
|
||||
+ "locked": false,
|
||||
+ "builds": [{"override": null,
|
||||
+ "nvr": "hwloc-1.11.0-3.fc22"}],
|
||||
+ "date_modified": null,
|
||||
+ "test_cases": [],
|
||||
+ "notes": "Fix for BZ1253977",
|
||||
+ "request": null,
|
||||
+ "bugs": [
|
||||
+ {
|
||||
+ "bug_id": 1253977,
|
||||
+ "security": false,
|
||||
+ "feedback": [],
|
||||
+ "parent": false,
|
||||
+ "title": "conflict between hwloc-libs-1.11.0-1.fc22.i686 and hwloc-libs-1.11.0-1.fc22.x86_64"
|
||||
+ }
|
||||
+ ],
|
||||
+ "alias": "FEDORA-2015-13720",
|
||||
+ "karma": 0,
|
||||
+ "release":
|
||||
+ {
|
||||
+ "dist_tag": "f22",
|
||||
+ "name": "F22",
|
||||
+ "testing_tag": "f22-updates-testing",
|
||||
+ "pending_stable_tag": "f22-updates-pending",
|
||||
+ "long_name": "Fedora 22",
|
||||
+ "state": "current",
|
||||
+ "version": "22",
|
||||
+ "override_tag": "f22-override",
|
||||
+ "branch": "f22",
|
||||
+ "id_prefix": "FEDORA",
|
||||
+ "pending_testing_tag": "f22-updates-testing-pending",
|
||||
+ "stable_tag": "f22-updates",
|
||||
+ "candidate_tag": "f22-updates-candidate"
|
||||
+ }
|
||||
+ }
|
||||
+ ],
|
||||
+ "display_request": true,
|
||||
+ "page": 1
|
||||
}
|
||||
*/
|
||||
|
||||
-static const char *bodhi_url = "https://admin.fedoraproject.org/updates";
|
||||
+static const char *bodhi_url = "https://bodhi.fedoraproject.org/updates";
|
||||
|
||||
struct bodhi {
|
||||
char *nvr;
|
||||
@@ -202,7 +221,7 @@ static GHashTable *bodhi_parse_json(json_object *json, const char *release)
|
||||
{
|
||||
|
||||
int num_items = 0;
|
||||
- bodhi_read_value(json, "num_items", &num_items, BODHI_READ_INT);
|
||||
+ bodhi_read_value(json, "total", &num_items, BODHI_READ_INT);
|
||||
if (num_items <= 0)
|
||||
return NULL;
|
||||
|
||||
@@ -241,13 +260,19 @@ static GHashTable *bodhi_parse_json(json_object *json, const char *release)
|
||||
b = xzalloc(sizeof(struct bodhi));
|
||||
|
||||
char *name = NULL;
|
||||
+ long ign_e;
|
||||
+ char *ign_v, *ign_r, *ign_a;
|
||||
+
|
||||
json_object *build = json_object_array_get_idx(builds_item, k);
|
||||
|
||||
bodhi_read_value(build, "nvr", &b->nvr, BODHI_READ_STR);
|
||||
|
||||
- json_object *package = NULL;
|
||||
- bodhi_read_value(build, "package", &package, BODHI_READ_JSON_OBJ);
|
||||
- bodhi_read_value(package, "name", &name, BODHI_READ_STR);
|
||||
+ if (hy_split_nevra(b->nvr, &name, &ign_e, &ign_v, &ign_r, &ign_a))
|
||||
+ error_msg_and_die("hawkey failed to parse '%s'", b->nvr);
|
||||
+
|
||||
+ free(ign_v);
|
||||
+ free(ign_r);
|
||||
+ free(ign_a);
|
||||
|
||||
struct bodhi *bodhi_tbl_item = g_hash_table_lookup(bodhi_table, name);
|
||||
if (bodhi_tbl_item && rpmvercmp(bodhi_tbl_item->nvr, b->nvr) > 0)
|
||||
@@ -287,7 +312,7 @@ static GHashTable *bodhi_parse_json(json_object *json, const char *release)
|
||||
|
||||
static GHashTable *bodhi_query_list(const char *query, const char *release)
|
||||
{
|
||||
- char *bodhi_url_bugs = xasprintf("%s/list", bodhi_url);
|
||||
+ char *bodhi_url_bugs = xasprintf("%s/?%s", bodhi_url, query);
|
||||
|
||||
post_state_t *post_state = new_post_state(POST_WANT_BODY
|
||||
| POST_WANT_SSL_VERIFY
|
||||
@@ -298,8 +323,8 @@ static GHashTable *bodhi_query_list(const char *query, const char *release)
|
||||
NULL
|
||||
};
|
||||
|
||||
- post_string(post_state, bodhi_url_bugs, "application/x-www-form-urlencoded",
|
||||
- headers, query);
|
||||
+ get(post_state, bodhi_url_bugs, "application/x-www-form-urlencoded",
|
||||
+ headers);
|
||||
|
||||
if (post_state->http_resp_code != 200)
|
||||
{
|
||||
@@ -397,7 +422,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
if (release)
|
||||
{
|
||||
- query = strbuf_append_strf(query, "release=%s&", release);
|
||||
+ query = strbuf_append_strf(query, "releases=%s&", release);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -414,7 +439,7 @@ int main(int argc, char **argv)
|
||||
map_string_t *osinfo = new_map_string();
|
||||
problem_data_get_osinfo(problem_data, osinfo);
|
||||
parse_osinfo_for_rhts(osinfo, &product, &version);
|
||||
- query = strbuf_append_strf(query, "release=f%s&", version);
|
||||
+ query = strbuf_append_strf(query, "releases=f%s&", version);
|
||||
free(product);
|
||||
free(version);
|
||||
free_map_string(osinfo);
|
||||
@@ -424,7 +449,7 @@ int main(int argc, char **argv)
|
||||
if (argv[optind])
|
||||
{
|
||||
char *escaped = g_uri_escape_string(argv[optind], NULL, 0);
|
||||
- query = strbuf_append_strf(query, "package=%s&", escaped);
|
||||
+ query = strbuf_append_strf(query, "packages=%s&", escaped);
|
||||
free(escaped);
|
||||
}
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
28
0020-ccpp-do-not-break-the-reporting-if-a-bodhi-fails.patch
Normal file
28
0020-ccpp-do-not-break-the-reporting-if-a-bodhi-fails.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
From 5bdcc2f09aa22180b4ce072f1ec1d65e86eafbab Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 26 Aug 2015 08:28:07 +0200
|
||||
Subject: [PATCH] ccpp: do not break the reporting if a-bodhi fails
|
||||
|
||||
Related: rhbz#1256493
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-action-analyze-ccpp-local.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-action-analyze-ccpp-local.in b/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
index de131c8..5a42a03 100644
|
||||
--- a/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
+++ b/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
@@ -39,7 +39,7 @@ if [ $? = 0 ]; then
|
||||
bug_id=$(reporter-bugzilla -h "`cat duphash`")
|
||||
if $WITH_BODHI; then
|
||||
if test -n "$bug_id"; then
|
||||
- abrt-bodhi -r -b $bug_id
|
||||
+ abrt-bodhi -r -b $bug_id || :
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
--
|
||||
2.5.0
|
||||
|
||||
53
0021-bodhi-add-ignoring-of-Rawhide.patch
Normal file
53
0021-bodhi-add-ignoring-of-Rawhide.patch
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
From 6171adb8111747550e5093cd673e2f254ec1b7c9 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Wed, 26 Aug 2015 13:18:26 +0200
|
||||
Subject: [PATCH] bodhi: add ignoring of Rawhide
|
||||
|
||||
Resolves: rhbz#1256493
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/bodhi.c | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/bodhi.c b/src/plugins/bodhi.c
|
||||
index 831f5ff..9149347 100644
|
||||
--- a/src/plugins/bodhi.c
|
||||
+++ b/src/plugins/bodhi.c
|
||||
@@ -422,6 +422,10 @@ int main(int argc, char **argv)
|
||||
{
|
||||
if (release)
|
||||
{
|
||||
+ /* There are no bodhi updates for Rawhide */
|
||||
+ if (strcasecmp(release, "rawhide") == 0)
|
||||
+ error_msg_and_die("Reselase \"%s\" is not supported",release);
|
||||
+
|
||||
query = strbuf_append_strf(query, "releases=%s&", release);
|
||||
}
|
||||
else
|
||||
@@ -439,10 +443,21 @@ int main(int argc, char **argv)
|
||||
map_string_t *osinfo = new_map_string();
|
||||
problem_data_get_osinfo(problem_data, osinfo);
|
||||
parse_osinfo_for_rhts(osinfo, &product, &version);
|
||||
- query = strbuf_append_strf(query, "releases=f%s&", version);
|
||||
+
|
||||
+ /* There are no bodhi updates for Rawhide */
|
||||
+ bool rawhide = strcasecmp(release, "rawhide") == 0;
|
||||
+ if (!rawhide)
|
||||
+ query = strbuf_append_strf(query, "releases=f%s&", version);
|
||||
+
|
||||
free(product);
|
||||
free(version);
|
||||
free_map_string(osinfo);
|
||||
+
|
||||
+ if (rawhide)
|
||||
+ {
|
||||
+ strbuf_free(query);
|
||||
+ error_msg_and_die("Reselase \"Rawhide\" is not supported");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
110
0022-bodhi-add-parsing-of-error-responses.patch
Normal file
110
0022-bodhi-add-parsing-of-error-responses.patch
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
From 167ebb0a8930dcd19c4078773da8c580785053d9 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Wed, 26 Aug 2015 13:41:27 +0200
|
||||
Subject: [PATCH] bodhi: add parsing of error responses
|
||||
|
||||
Resolves: rhbz#1256493
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/bodhi.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 69 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/bodhi.c b/src/plugins/bodhi.c
|
||||
index 9149347..b348a26 100644
|
||||
--- a/src/plugins/bodhi.c
|
||||
+++ b/src/plugins/bodhi.c
|
||||
@@ -217,6 +217,58 @@ static void print_bodhi(struct bodhi *b)
|
||||
}
|
||||
#endif
|
||||
|
||||
+/* bodhi returns following json structure in case of error
|
||||
+{
|
||||
+ "status": "error",
|
||||
+ "errors":
|
||||
+ [
|
||||
+ {
|
||||
+ "location": "querystring",
|
||||
+ "name": "releases",
|
||||
+ "description": "Invalid releases specified: Rawhide"
|
||||
+ }
|
||||
+ ]
|
||||
+}
|
||||
+*/
|
||||
+static void bodhi_print_errors_from_json(json_object *json)
|
||||
+{
|
||||
+
|
||||
+ json_object *errors_array = NULL;
|
||||
+ bodhi_read_value(json, "errors", &errors_array, BODHI_READ_JSON_OBJ);
|
||||
+ if (!errors_array)
|
||||
+ {
|
||||
+ error_msg("Error: unable to read 'errors' array from json");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ int errors_len = json_object_array_length(errors_array);
|
||||
+ for (int i = 0; i < errors_len; ++i)
|
||||
+ {
|
||||
+ json_object *error = json_object_array_get_idx(errors_array, i);
|
||||
+ if (!error)
|
||||
+ {
|
||||
+ error_msg("Error: unable to get 'error[%d]'", i);
|
||||
+ json_object_put(errors_array);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ char *desc_item = NULL;
|
||||
+ bodhi_read_value(error, "description", &desc_item, BODHI_READ_STR);
|
||||
+ if (!desc_item)
|
||||
+ {
|
||||
+ error_msg("Error: unable to get 'description' from 'error[%d]'", i);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ error_msg("Error: %s", desc_item);
|
||||
+ json_object_put(error);
|
||||
+ free(desc_item);
|
||||
+ }
|
||||
+
|
||||
+ json_object_put(errors_array);
|
||||
+ return;
|
||||
+}
|
||||
+
|
||||
static GHashTable *bodhi_parse_json(json_object *json, const char *release)
|
||||
{
|
||||
|
||||
@@ -326,7 +378,7 @@ static GHashTable *bodhi_query_list(const char *query, const char *release)
|
||||
get(post_state, bodhi_url_bugs, "application/x-www-form-urlencoded",
|
||||
headers);
|
||||
|
||||
- if (post_state->http_resp_code != 200)
|
||||
+ if (post_state->http_resp_code != 200 && post_state->http_resp_code != 400)
|
||||
{
|
||||
char *errmsg = post_state->curl_error_msg;
|
||||
if (errmsg && errmsg[0])
|
||||
@@ -340,6 +392,22 @@ static GHashTable *bodhi_query_list(const char *query, const char *release)
|
||||
if (is_error(json))
|
||||
error_msg_and_die("fatal: unable parse response from bodhi server");
|
||||
|
||||
+ /* we must check the http_resp_code because only error responses contain
|
||||
+ * 'status' item. 'bodhi_read_value' function prints an error message in
|
||||
+ * the case it did not found the item */
|
||||
+ if (post_state->http_resp_code != 200)
|
||||
+ {
|
||||
+ char *status_item = NULL;
|
||||
+ bodhi_read_value(json, "status", &status_item, BODHI_READ_STR);
|
||||
+ if (status_item != NULL && strcmp(status_item, "error") == 0)
|
||||
+ {
|
||||
+ free(status_item);
|
||||
+ bodhi_print_errors_from_json(json);
|
||||
+ json_object_put(json);
|
||||
+ xfunc_die(); // error_msg are printed in bodhi_print_errors_from_json
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
GHashTable *bodhi_table = bodhi_parse_json(json, release);
|
||||
json_object_put(json);
|
||||
free_post_state(post_state);
|
||||
--
|
||||
2.5.0
|
||||
|
||||
41
0023-doc-actualize-the-abrt-bodhi-man-page.patch
Normal file
41
0023-doc-actualize-the-abrt-bodhi-man-page.patch
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
From e47863d42f78ddcd404561e21c4c75e6d2feb99e Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Wed, 2 Sep 2015 12:29:31 +0200
|
||||
Subject: [PATCH] doc: actualize the abrt-bodhi man page
|
||||
|
||||
Parameters -d and -u were not in the man page.
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/abrt-bodhi.txt | 8 +++++++-
|
||||
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/doc/abrt-bodhi.txt b/doc/abrt-bodhi.txt
|
||||
index 945a4a9..fe790d6 100644
|
||||
--- a/doc/abrt-bodhi.txt
|
||||
+++ b/doc/abrt-bodhi.txt
|
||||
@@ -7,7 +7,7 @@ abrt-bodhi - The ABRT bodhi client.
|
||||
|
||||
SYNOPSIS
|
||||
--------
|
||||
-'abrt-bodhi' [-v] [-r[RELEASE]] (-b ID1[,ID2,...] | PKG-NAME) [PKG-NAME]...
|
||||
+'abrt-bodhi' [-v] [-r[RELEASE]] [-u URL] [-d DIR] (-b ID1[,ID2,...] | PKG-NAME) [PKG-NAME]...
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@@ -25,6 +25,12 @@ OPTIONS
|
||||
-b, --bugs ID1,ID2,..
|
||||
Specify any number of Bugzilla IDs (--bugs=1234,5678)
|
||||
|
||||
+-d, --problem-dir DIR::
|
||||
+ Path to problem directory
|
||||
+
|
||||
+-u, --url URL::
|
||||
+ Specify a bodhi server url
|
||||
+
|
||||
AUTHORS
|
||||
-------
|
||||
* ABRT team
|
||||
--
|
||||
2.5.0
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
From 66a27fb723e0930d30ea319484817b3f5ee364dc Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Mon, 7 Sep 2015 10:23:30 +0200
|
||||
Subject: [PATCH] bodhi: fix a segfault when testing an os-release opt for
|
||||
'rawhide'
|
||||
|
||||
Resolves: rhbz#1260259
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/plugins/bodhi.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/bodhi.c b/src/plugins/bodhi.c
|
||||
index b348a26..bbd88f7 100644
|
||||
--- a/src/plugins/bodhi.c
|
||||
+++ b/src/plugins/bodhi.c
|
||||
@@ -513,7 +513,7 @@ int main(int argc, char **argv)
|
||||
parse_osinfo_for_rhts(osinfo, &product, &version);
|
||||
|
||||
/* There are no bodhi updates for Rawhide */
|
||||
- bool rawhide = strcasecmp(release, "rawhide") == 0;
|
||||
+ bool rawhide = strcasecmp(version, "rawhide") == 0;
|
||||
if (!rawhide)
|
||||
query = strbuf_append_strf(query, "releases=f%s&", version);
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
39
0025-bodhi-fix-typo-in-error-messages.patch
Normal file
39
0025-bodhi-fix-typo-in-error-messages.patch
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
From 288c3de2a74f82972e35465fb82227cd7bfc5766 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Mon, 21 Sep 2015 10:11:22 +0200
|
||||
Subject: [PATCH] bodhi: fix typo in error messages
|
||||
|
||||
"Reselase" -> "Release"
|
||||
|
||||
Related to rhbz#1264591
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/bodhi.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/bodhi.c b/src/plugins/bodhi.c
|
||||
index bbd88f7..809d398 100644
|
||||
--- a/src/plugins/bodhi.c
|
||||
+++ b/src/plugins/bodhi.c
|
||||
@@ -492,7 +492,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
/* There are no bodhi updates for Rawhide */
|
||||
if (strcasecmp(release, "rawhide") == 0)
|
||||
- error_msg_and_die("Reselase \"%s\" is not supported",release);
|
||||
+ error_msg_and_die("Release \"%s\" is not supported",release);
|
||||
|
||||
query = strbuf_append_strf(query, "releases=%s&", release);
|
||||
}
|
||||
@@ -524,7 +524,7 @@ int main(int argc, char **argv)
|
||||
if (rawhide)
|
||||
{
|
||||
strbuf_free(query);
|
||||
- error_msg_and_die("Reselase \"Rawhide\" is not supported");
|
||||
+ error_msg_and_die("Release \"Rawhide\" is not supported");
|
||||
}
|
||||
}
|
||||
}
|
||||
--
|
||||
2.5.0
|
||||
|
||||
109
0026-abrt-dump-xorg-support-Xorg-log-backtraces-prefixed-.patch
Normal file
109
0026-abrt-dump-xorg-support-Xorg-log-backtraces-prefixed-.patch
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
From edf897e2d62e6cb290b314e41a471894e2a2ca8f Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Thu, 24 Sep 2015 10:30:47 +0200
|
||||
Subject: [PATCH] abrt-dump-xorg: support Xorg log backtraces prefixed by (EE)
|
||||
|
||||
The backtraces looks like
|
||||
[ 60244.259] (EE) Backtrace
|
||||
[ 60244.262] (EE) 0: /usr/libexec/Xorg (OsLookupColor+0x139) [0x59add9]
|
||||
[ 60244.264] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f61be425b1f]
|
||||
...
|
||||
[ 60244.273] (EE) 13: ? (?+0x29) [0x29]
|
||||
[ 60244.273] (EE)
|
||||
[ 60244.273] (EE) Segmentation fault at address 0x7f61d93f6160
|
||||
|
||||
This format of Xorg log files was not supported by abrt-dump-xorg tool.
|
||||
|
||||
Related to rhbz#1264739
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-dump-xorg.c | 57 +++++++++++++++++++++++++++++---------------
|
||||
1 file changed, 38 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-dump-xorg.c b/src/plugins/abrt-dump-xorg.c
|
||||
index 4aaff11..6cdfc95 100644
|
||||
--- a/src/plugins/abrt-dump-xorg.c
|
||||
+++ b/src/plugins/abrt-dump-xorg.c
|
||||
@@ -51,8 +51,19 @@ static char *skip_pfx(char *p)
|
||||
char *q = strchr(p, ']');
|
||||
if (!q)
|
||||
return p;
|
||||
+
|
||||
if (q[1] == ' ')
|
||||
- return q + 2;
|
||||
+ {
|
||||
+ q += 2;
|
||||
+ /* if there is (EE), ignore it */
|
||||
+ if (strncmp(q, "(EE)", 4) == 0)
|
||||
+ {
|
||||
+ /* if ' ' follows (EE), ignore it too */
|
||||
+ return q + (4 + (q[4] == ' '));
|
||||
+ }
|
||||
+
|
||||
+ return q;
|
||||
+ }
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -114,24 +125,24 @@ static void save_bt_to_dump_dir(const char *bt, const char *exe, const char *rea
|
||||
/* Called after "Backtrace:" line was read.
|
||||
* Example (yes, stray newline before 'B' is real):
|
||||
[ 86985.879]<space>
|
||||
-Backtrace:
|
||||
-[ 86985.880] 0: /usr/bin/Xorg (xorg_backtrace+0x2f) [0x462d8f]
|
||||
-[ 86985.880] 1: /usr/bin/Xorg (0x400000+0x67b56) [0x467b56]
|
||||
-[ 86985.880] 2: /lib64/libpthread.so.0 (0x30a5800000+0xf4f0) [0x30a580f4f0]
|
||||
-[ 86985.880] 3: /usr/lib64/xorg/modules/extensions/librecord.so (0x7ff6c225e000+0x26c3) [0x7ff6c22606c3]
|
||||
-[ 86985.880] 4: /usr/bin/Xorg (_CallCallbacks+0x3c) [0x43820c]
|
||||
-[ 86985.880] 5: /usr/bin/Xorg (WriteToClient+0x1f5) [0x466315]
|
||||
-[ 86985.880] 6: /usr/lib64/xorg/modules/extensions/libdri2.so (ProcDRI2WaitMSCReply+0x4f) [0x7ff6c1e4feef]
|
||||
-[ 86985.880] 7: /usr/lib64/xorg/modules/extensions/libdri2.so (DRI2WaitMSCComplete+0x52) [0x7ff6c1e4e6d2]
|
||||
-[ 86985.880] 8: /usr/lib64/xorg/modules/drivers/intel_drv.so (0x7ff6c1bfb000+0x25ae4) [0x7ff6c1c20ae4]
|
||||
-[ 86985.880] 9: /usr/lib64/libdrm.so.2 (drmHandleEvent+0xa3) [0x376b407513]
|
||||
-[ 86985.880] 10: /usr/bin/Xorg (WakeupHandler+0x6b) [0x4379db]
|
||||
-[ 86985.880] 11: /usr/bin/Xorg (WaitForSomething+0x1a9) [0x460289]
|
||||
-[ 86985.880] 12: /usr/bin/Xorg (0x400000+0x3379a) [0x43379a]
|
||||
-[ 86985.880] 13: /usr/bin/Xorg (0x400000+0x22dc5) [0x422dc5]
|
||||
-[ 86985.880] 14: /lib64/libc.so.6 (__libc_start_main+0xed) [0x30a542169d]
|
||||
-[ 86985.880] 15: /usr/bin/Xorg (0x400000+0x230b1) [0x4230b1]
|
||||
-[ 86985.880] Segmentation fault at address 0x7ff6bf09e010
|
||||
+[ 60244.259] (EE) Backtrace:
|
||||
+[ 60244.262] (EE) 0: /usr/libexec/Xorg (OsLookupColor+0x139) [0x59add9]
|
||||
+[ 60244.264] (EE) 1: /lib64/libc.so.6 (__restore_rt+0x0) [0x7f61be425b1f]
|
||||
+[ 60244.266] (EE) 2: /usr/lib64/xorg/modules/drivers/intel_drv.so (_init+0xa9fc) [0x7f61b903116c]
|
||||
+[ 60244.267] (EE) 3: /usr/lib64/xorg/modules/drivers/intel_drv.so (_init+0xbe27) [0x7f61b90339a7]
|
||||
+[ 60244.268] (EE) 4: /usr/lib64/xorg/modules/drivers/intel_drv.so (_init+0x31060) [0x7f61b907db00]
|
||||
+[ 60244.269] (EE) 5: /usr/lib64/xorg/modules/drivers/intel_drv.so (_init+0x3fb73) [0x7f61b909b0c3]
|
||||
+[ 60244.270] (EE) 6: /usr/lib64/xorg/modules/drivers/intel_drv.so (_init+0x3fe1a) [0x7f61b909b77a]
|
||||
+[ 60244.270] (EE) 7: /usr/libexec/Xorg (DamageRegionAppend+0x3783) [0x525003]
|
||||
+[ 60244.270] (EE) 8: /usr/libexec/Xorg (SendGraphicsExpose+0xeb3) [0x4340b3]
|
||||
+[ 60244.270] (EE) 9: /usr/libexec/Xorg (SendErrorToClient+0x2df) [0x43684f]
|
||||
+[ 60244.271] (EE) 10: /usr/libexec/Xorg (remove_fs_handlers+0x453) [0x43a893]
|
||||
+[ 60244.272] (EE) 11: /lib64/libc.so.6 (__libc_start_main+0xf0) [0x7f61be411580]
|
||||
+[ 60244.272] (EE) 12: /usr/libexec/Xorg (_start+0x29) [0x424b79]
|
||||
+[ 60244.273] (EE) 13: ? (?+0x29) [0x29]
|
||||
+[ 60244.273] (EE)
|
||||
+[ 60244.273] (EE) Segmentation fault at address 0x7f61d93f6160
|
||||
+[ 60244.273] (EE)
|
||||
*/
|
||||
static void process_xorg_bt(void)
|
||||
{
|
||||
@@ -144,6 +155,14 @@ static void process_xorg_bt(void)
|
||||
{
|
||||
char *p = skip_pfx(line);
|
||||
|
||||
+ /* ignore empty lines
|
||||
+ * [ 60244.273] (EE) 13: ? (?+0x29) [0x29]
|
||||
+ * [ 60244.273] (EE) <---
|
||||
+ * [ 60244.273] (EE) Segmentation fault at address 0x7f61d93f6160
|
||||
+ */
|
||||
+ if (*p == '\0')
|
||||
+ continue;
|
||||
+
|
||||
/* xorg-server-1.12.0/os/osinit.c:
|
||||
* if (sip->si_code == SI_USER) {
|
||||
* ErrorF("Recieved signal %d sent by process %ld, uid %ld\n",
|
||||
--
|
||||
2.5.0
|
||||
|
||||
27
0027-a-a-a-ccpp-local-don-t-delete-build_ids.patch
Normal file
27
0027-a-a-a-ccpp-local-don-t-delete-build_ids.patch
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
From 7b393bb4b8eae7873996467ea11706127e1dbf85 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Marko <rmarko@fedoraproject.org>
|
||||
Date: Wed, 17 Jun 2015 15:16:03 +0200
|
||||
Subject: [PATCH] a-a-a-ccpp-local don't delete build_ids
|
||||
|
||||
rm -f always succeeds that causes further actions to run.
|
||||
|
||||
Signed-off-by: Richard Marko <rmarko@fedoraproject.org>
|
||||
---
|
||||
src/plugins/abrt-action-analyze-ccpp-local.in | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-action-analyze-ccpp-local.in b/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
index 5a42a03..d3df01d 100644
|
||||
--- a/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
+++ b/src/plugins/abrt-action-analyze-ccpp-local.in
|
||||
@@ -28,7 +28,6 @@ if $INSTALL_DI; then
|
||||
else
|
||||
abrt-action-analyze-core --core=coredump -o build_ids && @LIBEXEC_DIR@/abrt-action-install-debuginfo-to-abrt-cache --size_mb=4096
|
||||
fi
|
||||
- rm -f build_ids
|
||||
fi
|
||||
|
||||
if [ $? = 0 ]; then
|
||||
--
|
||||
2.5.0
|
||||
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
From e5a29b08bb48b408c5e88fa5382f8253ca90a937 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Marko <rmarko@fedoraproject.org>
|
||||
Date: Thu, 8 Oct 2015 15:03:26 +0200
|
||||
Subject: [PATCH] abrt-retrace-client: use atoll for _size conversion
|
||||
|
||||
Otherwise we get
|
||||
|
||||
The size of your crash is 28.1 MiB, but the retrace server only accepts
|
||||
crashes smaller or equal to 16.0 EiB.
|
||||
|
||||
(gdb) print settings->max_unpacked_size
|
||||
$4 = -50331648
|
||||
---
|
||||
src/plugins/abrt-retrace-client.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-retrace-client.c b/src/plugins/abrt-retrace-client.c
|
||||
index 0b67773..540cdc9 100644
|
||||
--- a/src/plugins/abrt-retrace-client.c
|
||||
+++ b/src/plugins/abrt-retrace-client.c
|
||||
@@ -256,9 +256,9 @@ struct retrace_settings *get_settings()
|
||||
else if (0 == strcasecmp("max_running_tasks", row))
|
||||
settings->max_running_tasks = atoi(value);
|
||||
else if (0 == strcasecmp("max_packed_size", row))
|
||||
- settings->max_packed_size = atoi(value) * 1024 * 1024;
|
||||
+ settings->max_packed_size = atoll(value) * 1024 * 1024;
|
||||
else if (0 == strcasecmp("max_unpacked_size", row))
|
||||
- settings->max_unpacked_size = atoi(value) * 1024 * 1024;
|
||||
+ settings->max_unpacked_size = atoll(value) * 1024 * 1024;
|
||||
else if (0 == strcasecmp("supported_formats", row))
|
||||
{
|
||||
char *space;
|
||||
--
|
||||
2.5.0
|
||||
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
From 6bb7cdc454a824826362c68af66cdb92b4bc6653 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Mon, 12 Oct 2015 14:03:13 +0200
|
||||
Subject: [PATCH] doc: fix default DumpLocation in abrt.conf man page
|
||||
|
||||
ABRT no longer stores crashes to /var/tmp/abrt by default.
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/abrt.conf.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/doc/abrt.conf.txt b/doc/abrt.conf.txt
|
||||
index d782e3d..6626596 100644
|
||||
--- a/doc/abrt.conf.txt
|
||||
+++ b/doc/abrt.conf.txt
|
||||
@@ -16,7 +16,7 @@ A description of each item follows:
|
||||
|
||||
DumpLocation = 'directory'::
|
||||
The directory where should 'abrt' store coredumps and all files which are
|
||||
- needed for reporting. The default is /var/tmp/abrt.
|
||||
+ needed for reporting. The default is /var/spool/abrt.
|
||||
|
||||
MaxCrashReportsSize = 'number'::
|
||||
The maximum disk space (specified in megabytes) that 'abrt'
|
||||
--
|
||||
2.5.0
|
||||
|
||||
32
0030-dbus-ensure-expected-bytes-width-of-DBus-numbers.patch
Normal file
32
0030-dbus-ensure-expected-bytes-width-of-DBus-numbers.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
From 97633ab28bef2e65032fb81063922e3106dd135b Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 28 Oct 2015 00:21:12 +0100
|
||||
Subject: [PATCH] dbus: ensure expected bytes width of DBus numbers
|
||||
|
||||
t - UINT64 - guint64 (unsigned long is not wide enough on 32bit architectures)
|
||||
|
||||
Resolves: rhbz#1256456
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/dbus/abrt-dbus.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/dbus/abrt-dbus.c b/src/dbus/abrt-dbus.c
|
||||
index 44778a2..500ddb2 100644
|
||||
--- a/src/dbus/abrt-dbus.c
|
||||
+++ b/src/dbus/abrt-dbus.c
|
||||
@@ -625,8 +625,8 @@ static void handle_method_call(GDBusConnection *connection,
|
||||
|
||||
g_variant_builder_add(response_builder, "{s(its)}",
|
||||
element_name,
|
||||
- element_info->flags,
|
||||
- size,
|
||||
+ (gint32)element_info->flags,
|
||||
+ (guint64)size,
|
||||
element_info->content);
|
||||
}
|
||||
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
From 001066cf6238ee3a61f1a87607272e9736d3e371 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Mon, 26 Oct 2015 13:57:51 +0100
|
||||
Subject: [PATCH] doc: add missing man page for abrt-dump-journal-core
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/Makefile.am | 1 +
|
||||
doc/abrt-dump-journal-core.txt | 65 ++++++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 66 insertions(+)
|
||||
create mode 100644 doc/abrt-dump-journal-core.txt
|
||||
|
||||
diff --git a/doc/Makefile.am b/doc/Makefile.am
|
||||
index fdd08cf..ec6b3c5 100644
|
||||
--- a/doc/Makefile.am
|
||||
+++ b/doc/Makefile.am
|
||||
@@ -19,6 +19,7 @@ MAN1_TXT += abrt-action-perform-ccpp-analysis.txt
|
||||
MAN1_TXT += abrt-action-notify.txt
|
||||
MAN1_TXT += abrt-applet.txt
|
||||
MAN1_TXT += abrt-dump-oops.txt
|
||||
+MAN1_TXT += abrt-dump-journal-core.txt
|
||||
MAN1_TXT += abrt-dump-journal-oops.txt
|
||||
MAN1_TXT += abrt-dump-xorg.txt
|
||||
MAN1_TXT += abrt-auto-reporting.txt
|
||||
diff --git a/doc/abrt-dump-journal-core.txt b/doc/abrt-dump-journal-core.txt
|
||||
new file mode 100644
|
||||
index 0000000..25d5e57
|
||||
--- /dev/null
|
||||
+++ b/doc/abrt-dump-journal-core.txt
|
||||
@@ -0,0 +1,65 @@
|
||||
+abrt-dump-journal-core(1)
|
||||
+=========================
|
||||
+
|
||||
+NAME
|
||||
+----
|
||||
+abrt-dump-journal-core - Extract coredumps from systemd-journal
|
||||
+
|
||||
+SYNOPSIS
|
||||
+--------
|
||||
+'abrt-dump-journal-core' [-vsf] [-e]/[-c CURSOR] [-t INT]/[-T] [-d DIR]/[-D]
|
||||
+
|
||||
+DESCRIPTION
|
||||
+-----------
|
||||
+This tool creates problem directory from coredumps extracted from
|
||||
+systemd-journal.
|
||||
+The tool can follow systemd-journal and extract coredumps in time of their
|
||||
+occurrence.
|
||||
+
|
||||
+The following start from the last seen cursor. If the last seen cursor file
|
||||
+does not exist, the following start by scanning the entire sytemd-journal or
|
||||
+from the end if '-e' option is specified.
|
||||
+
|
||||
+-c and -e options conflicts because both specifies the first read message.
|
||||
+
|
||||
+-e is useful only for -f because the following of journal starts by reading
|
||||
+the entire journal if the last seen possition is not available.
|
||||
+
|
||||
+FILES
|
||||
+-----
|
||||
+/var/lib/abrt/abrt-dump-journal-core.state::
|
||||
+ State file where systemd-journal cursor to the last seen message is saved
|
||||
+
|
||||
+OPTIONS
|
||||
+-------
|
||||
+-v, --verbose::
|
||||
+ Be more verbose. Can be given multiple times.
|
||||
+
|
||||
+-s::
|
||||
+ Log to syslog
|
||||
+
|
||||
+-d DIR::
|
||||
+ Create new problem directory in DIR for every coredump
|
||||
+
|
||||
+-D::
|
||||
+ Same as -d DumpLocation, DumpLocation is specified in abrt.conf
|
||||
+
|
||||
+-e::
|
||||
+ Starts following systemd-journal from the end
|
||||
+
|
||||
+-t INT::
|
||||
+ Throttle problem directory creation to 1 per INT second
|
||||
+
|
||||
+-T::
|
||||
+ Same as -t INT, INT is specified in plugins/CCpp.conf
|
||||
+
|
||||
+-f::
|
||||
+ Follow systemd-journal from the last seen position (if available)
|
||||
+
|
||||
+SEE ALSO
|
||||
+--------
|
||||
+abrt.conf(5), journalctl(1)
|
||||
+
|
||||
+AUTHORS
|
||||
+-------
|
||||
+* ABRT team
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
From cf9e5388ac7d94ab5aa34b274c32d735b702c48a Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Mon, 26 Oct 2015 15:21:07 +0100
|
||||
Subject: [PATCH] a-d-journal-core: set root owner for created dump directory
|
||||
|
||||
Without this commit abrt-server fails during check the right owner and group of
|
||||
dump dirs.
|
||||
|
||||
Related to rhbz#1269827
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-dump-journal-core.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-dump-journal-core.c b/src/plugins/abrt-dump-journal-core.c
|
||||
index 7ad69e8..02d5afe 100644
|
||||
--- a/src/plugins/abrt-dump-journal-core.c
|
||||
+++ b/src/plugins/abrt-dump-journal-core.c
|
||||
@@ -302,7 +302,7 @@ save_systemd_coredump_in_dump_directory(struct dump_dir *dd, struct crash_info *
|
||||
static int
|
||||
abrt_journal_core_to_abrt_problem(struct crash_info *info, const char *dump_location)
|
||||
{
|
||||
- struct dump_dir *dd = create_dump_dir(dump_location, "ccpp", info->ci_uid,
|
||||
+ struct dump_dir *dd = create_dump_dir(dump_location, "ccpp", /*fs owner*/0,
|
||||
(save_data_call_back)save_systemd_coredump_in_dump_directory, info);
|
||||
|
||||
if (dd != NULL)
|
||||
--
|
||||
2.6.3
|
||||
|
||||
31
0034-doc-a-a-analyze-xorg-fix-path-to-conf-file.patch
Normal file
31
0034-doc-a-a-analyze-xorg-fix-path-to-conf-file.patch
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
From 8b6d1511bb89548c60a472ddbaefbf00743be1ea Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 3 Nov 2015 12:31:38 +0100
|
||||
Subject: [PATCH] doc: a-a-analyze-xorg fix path to conf file
|
||||
|
||||
xorg.conf is no longer located in /etc/abrt/xorg.conf but in
|
||||
/etc/abrt/plugins/xorg.conf.
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
doc/abrt-action-analyze-xorg.txt | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/doc/abrt-action-analyze-xorg.txt b/doc/abrt-action-analyze-xorg.txt
|
||||
index 880c6fb..aa72249 100644
|
||||
--- a/doc/abrt-action-analyze-xorg.txt
|
||||
+++ b/doc/abrt-action-analyze-xorg.txt
|
||||
@@ -39,8 +39,8 @@ OPTIONS
|
||||
|
||||
FILES
|
||||
-----
|
||||
-/etc/abrt/xorg.conf
|
||||
- List of modules which, when loaded, should make Xorg crashes non-reportable.
|
||||
+/etc/abrt/plugins/xorg.conf
|
||||
+ Configuration file for ABRT's tools which work with Xorg crashes
|
||||
|
||||
AUTHORS
|
||||
-------
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
From 02fa8cc3f0c63b61b4994ac66e5c7e304013b25f Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Tue, 10 Nov 2015 13:22:21 +0100
|
||||
Subject: [PATCH] a-a-s-p-data: fix segfault if GPGKeysDir isn't configured
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/daemon/abrt-action-save-package-data.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrt-action-save-package-data.c b/src/daemon/abrt-action-save-package-data.c
|
||||
index 7054f06..72c9878 100644
|
||||
--- a/src/daemon/abrt-action-save-package-data.c
|
||||
+++ b/src/daemon/abrt-action-save-package-data.c
|
||||
@@ -88,7 +88,7 @@ static void load_gpg_keys(void)
|
||||
}
|
||||
|
||||
const char *gpg_keys_dir = get_map_string_item_or_NULL(settings, "GPGKeysDir");
|
||||
- if (strcmp(gpg_keys_dir, "") != 0)
|
||||
+ if (gpg_keys_dir != NULL && strcmp(gpg_keys_dir, "") != 0)
|
||||
{
|
||||
log_debug("Reading gpg keys from '%s'", gpg_keys_dir);
|
||||
GHashTable *done_set = g_hash_table_new(g_str_hash, g_str_equal);
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
From a16d12d27e5c12f3e4ab5defaf775a692c405206 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 11 Nov 2015 13:19:35 +0100
|
||||
Subject: [PATCH] ccpp: make crashes of processes with locked memory
|
||||
not-reportable
|
||||
|
||||
Lets begin with a simply policy preventing users from accidental
|
||||
publication of problem data with security sensitive data.
|
||||
|
||||
"not-reportable" problems can still be auto-reported. That is not an
|
||||
security issue because uReports does not contain any user data stored in
|
||||
process' memory (only stack-trace without values local|global variables
|
||||
and function arguments).
|
||||
|
||||
Related to #796.
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-hook-ccpp.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
|
||||
index 809b45e..4b79900 100644
|
||||
--- a/src/hooks/abrt-hook-ccpp.c
|
||||
+++ b/src/hooks/abrt-hook-ccpp.c
|
||||
@@ -868,6 +868,27 @@ int main(int argc, char** argv)
|
||||
|
||||
dd_save_text(dd, FILENAME_ABRT_VERSION, VERSION);
|
||||
|
||||
+ /* In case of errors, treat the process as if it has locked memory */
|
||||
+ long unsigned lck_bytes = ULONG_MAX;
|
||||
+ const char *vmlck = strstr(proc_pid_status, "VmLck:");
|
||||
+ if (vmlck == NULL)
|
||||
+ error_msg("/proc/%s/status does not contain 'VmLck:' line", pid_str);
|
||||
+ else if (1 != sscanf(vmlck + 6, "%lu kB\n", &lck_bytes))
|
||||
+ error_msg("Failed to parse 'VmLck:' line in /proc/%s/status", pid_str);
|
||||
+
|
||||
+ if (lck_bytes)
|
||||
+ {
|
||||
+ log_notice("Process %s of user %lu has locked memory",
|
||||
+ pid_str, (long unsigned)uid);
|
||||
+
|
||||
+ dd_mark_as_notreportable(dd, "The process had locked memory "
|
||||
+ "which usually indicates efforts to protect sensitive "
|
||||
+ "data (passwords) from being written to disk.\n"
|
||||
+ "In order to avoid sensitive information leakages, "
|
||||
+ "ABRT will not allow you to report this problem to "
|
||||
+ "bug tracking tools");
|
||||
+ }
|
||||
+
|
||||
if (setting_SaveBinaryImage)
|
||||
{
|
||||
if (save_crashing_binary(pid, dd))
|
||||
--
|
||||
2.6.3
|
||||
|
||||
103
0037-a-a-i-d-to-abrt-cache-make-own-random-temporary-dire.patch
Normal file
103
0037-a-a-i-d-to-abrt-cache-make-own-random-temporary-dire.patch
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
From 4e5dfba1a1a4d5c5e49b7f6320bd2cb8052f86d1 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 11:50:18 +0200
|
||||
Subject: [PATCH] a-a-i-d-to-abrt-cache: make own random temporary directory
|
||||
|
||||
The set-user-ID wrapper must use own new temporary directory in order to
|
||||
avoid security issues with unpacking specially crafted debuginfo
|
||||
packages that might be used to create files or symlinks anywhere on the
|
||||
file system as the abrt user.
|
||||
|
||||
Withot the forking code the temporary directory would remain on the
|
||||
filesystem in the case where all debuginfo data are already available.
|
||||
This is caused by the fact that the underlying libreport functionality
|
||||
accepts path to a desired temporary directory and creates it only if
|
||||
necessary. Otherwise, the directory is not touched at all.
|
||||
|
||||
This commit addresses CVE-2015-5273
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/plugins/Makefile.am | 1 +
|
||||
.../abrt-action-install-debuginfo-to-abrt-cache.c | 41 +++++++++++++++++++---
|
||||
2 files changed, 38 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am
|
||||
index 1c1ff8a..c5ea1ec 100644
|
||||
--- a/src/plugins/Makefile.am
|
||||
+++ b/src/plugins/Makefile.am
|
||||
@@ -328,6 +328,7 @@ abrt_action_install_debuginfo_to_abrt_cache_CPPFLAGS = \
|
||||
-D_GNU_SOURCE \
|
||||
-DBIN_DIR=\"$(bindir)\" \
|
||||
-DSBIN_DIR=\"$(sbindir)\" \
|
||||
+ -DLARGE_DATA_TMP_DIR=\"$(LARGE_DATA_TMP_DIR)\" \
|
||||
$(LIBREPORT_CFLAGS) \
|
||||
-Wall -Wwrite-strings \
|
||||
-fPIE
|
||||
diff --git a/src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c b/src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c
|
||||
index 81b1486..52d00de 100644
|
||||
--- a/src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c
|
||||
+++ b/src/plugins/abrt-action-install-debuginfo-to-abrt-cache.c
|
||||
@@ -108,8 +108,14 @@ int main(int argc, char **argv)
|
||||
build_ids_self_fd = xasprintf("/proc/self/fd/%d", build_ids_fd);
|
||||
}
|
||||
|
||||
- /* name, -v, --ids, -, -y, -e, EXACT, -r, REPO, --, NULL */
|
||||
- const char *args[11];
|
||||
+ char tmp_directory[] = LARGE_DATA_TMP_DIR"/abrt-tmp-debuginfo.XXXXXX";
|
||||
+ if (mkdtemp(tmp_directory) == NULL)
|
||||
+ perror_msg_and_die("Failed to create working directory");
|
||||
+
|
||||
+ log_info("Created working directory: %s", tmp_directory);
|
||||
+
|
||||
+ /* name, -v, --ids, -, -y, -e, EXACT, -r, REPO, -t, PATH, --, NULL */
|
||||
+ const char *args[13];
|
||||
{
|
||||
const char *verbs[] = { "", "-v", "-vv", "-vvv" };
|
||||
unsigned i = 0;
|
||||
@@ -130,6 +136,8 @@ int main(int argc, char **argv)
|
||||
args[i++] = "--repo";
|
||||
args[i++] = repo;
|
||||
}
|
||||
+ args[i++] = "--tmpdir";
|
||||
+ args[i++] = tmp_directory;
|
||||
args[i++] = "--";
|
||||
args[i] = NULL;
|
||||
}
|
||||
@@ -204,6 +212,31 @@ int main(int argc, char **argv)
|
||||
umask(0022);
|
||||
}
|
||||
|
||||
- execvp(EXECUTABLE, (char **)args);
|
||||
- error_msg_and_die("Can't execute %s", EXECUTABLE);
|
||||
+ pid_t pid = fork();
|
||||
+ if (pid < 0)
|
||||
+ perror_msg_and_die("fork");
|
||||
+
|
||||
+ if (pid == 0)
|
||||
+ {
|
||||
+ execvp(EXECUTABLE, (char **)args);
|
||||
+ error_msg_and_die("Can't execute %s", EXECUTABLE);
|
||||
+ }
|
||||
+
|
||||
+ int status;
|
||||
+ if (safe_waitpid(pid, &status, 0) < 0)
|
||||
+ perror_msg_and_die("waitpid");
|
||||
+
|
||||
+ if (rmdir(tmp_directory) >= 0)
|
||||
+ log_info("Removed working directory: %s", tmp_directory);
|
||||
+ else if (errno != ENOENT)
|
||||
+ perror_msg("Failed to remove working directory");
|
||||
+
|
||||
+ /* Normal execution should exit here. */
|
||||
+ if (WIFEXITED(status))
|
||||
+ return WEXITSTATUS(status);
|
||||
+
|
||||
+ if (WIFSIGNALED(status))
|
||||
+ error_msg_and_die("Child terminated with signal %d", WTERMSIG(status));
|
||||
+
|
||||
+ error_msg_and_die("Child exit failed");
|
||||
}
|
||||
--
|
||||
2.6.3
|
||||
|
||||
101
0038-conf-introduce-DebugLevel.patch
Normal file
101
0038-conf-introduce-DebugLevel.patch
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
From 1cb9013d7ec62b282fd404062e88371916a12fad Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 12:17:47 +0200
|
||||
Subject: [PATCH] conf: introduce DebugLevel
|
||||
|
||||
ABRT should ignore problems caused by ABRT tools if DebugLevel == 0.
|
||||
DebugLevel is set to 0 by default.
|
||||
|
||||
Related to CVE-2015-5287
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
doc/abrt.conf.txt | 8 ++++++++
|
||||
src/daemon/abrt.conf | 8 ++++++++
|
||||
src/include/libabrt.h | 2 ++
|
||||
src/lib/abrt_conf.c | 14 ++++++++++++++
|
||||
4 files changed, 32 insertions(+)
|
||||
|
||||
diff --git a/doc/abrt.conf.txt b/doc/abrt.conf.txt
|
||||
index 6626596..1276f55 100644
|
||||
--- a/doc/abrt.conf.txt
|
||||
+++ b/doc/abrt.conf.txt
|
||||
@@ -36,6 +36,14 @@ DeleteUploaded = 'yes/no'::
|
||||
or not.
|
||||
The default value is 'no'.
|
||||
|
||||
+DebugLevel = '0-100':
|
||||
+ Allows ABRT tools to detect problems in ABRT itself. By increasing the value
|
||||
+ you can force ABRT to detect, process and report problems in ABRT. You have
|
||||
+ to bare in mind that ABRT might fall into an infinite loop when handling
|
||||
+ problems caused by itself.
|
||||
+ The default is 0 (non debug mode).
|
||||
+
|
||||
+
|
||||
SEE ALSO
|
||||
--------
|
||||
abrtd(8)
|
||||
diff --git a/src/daemon/abrt.conf b/src/daemon/abrt.conf
|
||||
index 0050c6d..dbc2007 100644
|
||||
--- a/src/daemon/abrt.conf
|
||||
+++ b/src/daemon/abrt.conf
|
||||
@@ -59,3 +59,11 @@ AutoreportingEnabled = no
|
||||
# SPECIAL ROOT DIRECTORY IN USER MOUNT NAMESAPCE
|
||||
#
|
||||
# ExploreChroots = false
|
||||
+
|
||||
+# Allows ABRT tools to detect problems in ABRT itself. By increasing the value
|
||||
+# you can force ABRT to detect, process and report problems in ABRT. You have
|
||||
+# to bare in mind that ABRT might fall into an infinite loop when handling
|
||||
+# problems caused by itself.
|
||||
+# The default is 0 (non debug mode).
|
||||
+#
|
||||
+# DebugLevel = 0
|
||||
diff --git a/src/include/libabrt.h b/src/include/libabrt.h
|
||||
index da565f9..6f89959 100644
|
||||
--- a/src/include/libabrt.h
|
||||
+++ b/src/include/libabrt.h
|
||||
@@ -77,6 +77,8 @@ extern char * g_settings_autoreporting_event;
|
||||
extern bool g_settings_shortenedreporting;
|
||||
#define g_settings_explorechroots abrt_g_settings_explorechroots
|
||||
extern bool g_settings_explorechroots;
|
||||
+#define g_settings_debug_level abrt_g_settings_debug_level
|
||||
+extern unsigned int g_settings_debug_level;
|
||||
|
||||
|
||||
#define load_abrt_conf abrt_load_abrt_conf
|
||||
diff --git a/src/lib/abrt_conf.c b/src/lib/abrt_conf.c
|
||||
index 46ff689..f623344 100644
|
||||
--- a/src/lib/abrt_conf.c
|
||||
+++ b/src/lib/abrt_conf.c
|
||||
@@ -28,6 +28,7 @@ bool g_settings_autoreporting = 0;
|
||||
char * g_settings_autoreporting_event = NULL;
|
||||
bool g_settings_shortenedreporting = 0;
|
||||
bool g_settings_explorechroots = 0;
|
||||
+unsigned int g_settings_debug_level = 0;
|
||||
|
||||
void free_abrt_conf_data()
|
||||
{
|
||||
@@ -116,6 +117,19 @@ static void ParseCommon(map_string_t *settings, const char *conf_filename)
|
||||
else
|
||||
g_settings_explorechroots = false;
|
||||
|
||||
+ value = get_map_string_item_or_NULL(settings, "DebugLevel");
|
||||
+ if (value)
|
||||
+ {
|
||||
+ char *end;
|
||||
+ errno = 0;
|
||||
+ unsigned long ul = strtoul(value, &end, 10);
|
||||
+ if (errno || end == value || *end != '\0' || ul > INT_MAX)
|
||||
+ error_msg("Error parsing %s setting: '%s'", "DebugLevel", value);
|
||||
+ else
|
||||
+ g_settings_debug_level = ul;
|
||||
+ remove_map_string_item(settings, "DebugLevel");
|
||||
+ }
|
||||
+
|
||||
GHashTableIter iter;
|
||||
const char *name;
|
||||
/*char *value; - already declared */
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
From 82264feebb3a816098e68f0dce1502521b6b7a92 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 12:19:48 +0200
|
||||
Subject: [PATCH] ccpp: ignore crashes of ABRT binaries if DebugLevel == 0
|
||||
|
||||
Prior this commit abrt-hook-ccpp was saved core file of any
|
||||
crashed process executing program whose name starts with "abrt" in
|
||||
DUMP_LOCATION.
|
||||
|
||||
ABRT does not check size constraints of these core files, so the files
|
||||
could consume an uncontrolled amount of disk space.
|
||||
|
||||
Related to CVE-2015-5287
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-hook-ccpp.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
|
||||
index 4b79900..4a31b81 100644
|
||||
--- a/src/hooks/abrt-hook-ccpp.c
|
||||
+++ b/src/hooks/abrt-hook-ccpp.c
|
||||
@@ -703,6 +703,13 @@ int main(int argc, char** argv)
|
||||
const char *last_slash = strrchr(executable, '/');
|
||||
if (last_slash && strncmp(++last_slash, "abrt", 4) == 0)
|
||||
{
|
||||
+ if (g_settings_debug_level == 0)
|
||||
+ {
|
||||
+ log_warning("Ignoring crash of %s (SIG%s).",
|
||||
+ executable, signame ? signame : signal_str);
|
||||
+ goto cleanup_and_exit;
|
||||
+ }
|
||||
+
|
||||
/* If abrtd/abrt-foo crashes, we don't want to create a _directory_,
|
||||
* since that can make new copy of abrtd to process it,
|
||||
* and maybe crash again...
|
||||
--
|
||||
2.6.3
|
||||
|
||||
34
0040-ccpp-save-abrt-core-files-only-to-new-files.patch
Normal file
34
0040-ccpp-save-abrt-core-files-only-to-new-files.patch
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
From fce92be28e87f4bbcf637ec06cc3e28652628684 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 12:24:32 +0200
|
||||
Subject: [PATCH] ccpp: save abrt core files only to new files
|
||||
|
||||
Prior this commit abrt-hook-ccpp saved a core file generated by a
|
||||
process running a program whose name starts with "abrt" in
|
||||
DUMP_LOCATION/$(basename program)-coredump. If the file was a symlink,
|
||||
the hook followed and wrote core file to the symlink's target.
|
||||
|
||||
Addresses CVE-2015-5287
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-hook-ccpp.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
|
||||
index 4a31b81..58d9c28 100644
|
||||
--- a/src/hooks/abrt-hook-ccpp.c
|
||||
+++ b/src/hooks/abrt-hook-ccpp.c
|
||||
@@ -718,7 +718,8 @@ int main(int argc, char** argv)
|
||||
if (snprintf(path, sizeof(path), "%s/%s-coredump", g_settings_dump_location, last_slash) >= sizeof(path))
|
||||
error_msg_and_die("Error saving '%s': truncated long file path", path);
|
||||
|
||||
- int abrt_core_fd = xopen3(path, O_WRONLY | O_CREAT | O_TRUNC, 0600);
|
||||
+ unlink(path);
|
||||
+ int abrt_core_fd = xopen3(path, O_WRONLY | O_CREAT | O_EXCL, 0600);
|
||||
off_t core_size = copyfd_eof(STDIN_FILENO, abrt_core_fd, COPYFD_SPARSE);
|
||||
if (core_size < 0 || fsync(abrt_core_fd) != 0)
|
||||
{
|
||||
--
|
||||
2.6.3
|
||||
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
From d8a3bd0d464f5b75ac360f4ee4e3cc6927a09199 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 14:13:35 +0200
|
||||
Subject: [PATCH] lib: add convenient wrappers for ensuring writable dir
|
||||
|
||||
Replace lchown with fchown and chmod with fchmod.
|
||||
|
||||
Related CVE-2015-5287
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/include/libabrt.h | 4 ++++
|
||||
src/lib/hooklib.c | 41 ++++++++++++++++++++++++++++++++++-------
|
||||
2 files changed, 38 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/include/libabrt.h b/src/include/libabrt.h
|
||||
index 6f89959..b26dcc6 100644
|
||||
--- a/src/include/libabrt.h
|
||||
+++ b/src/include/libabrt.h
|
||||
@@ -42,8 +42,12 @@ int low_free_space(unsigned setting_MaxCrashReportsSize, const char *dump_locati
|
||||
|
||||
#define trim_problem_dirs abrt_trim_problem_dirs
|
||||
void trim_problem_dirs(const char *dirname, double cap_size, const char *exclude_path);
|
||||
+#define ensure_writable_dir_id abrt_ensure_writable_dir_uid_git
|
||||
+void ensure_writable_dir_uid_gid(const char *dir, mode_t mode, uid_t uid, gid_t gid);
|
||||
#define ensure_writable_dir abrt_ensure_writable_dir
|
||||
void ensure_writable_dir(const char *dir, mode_t mode, const char *user);
|
||||
+#define ensure_writable_dir_group abrt_ensure_writable_dir_group
|
||||
+void ensure_writable_dir_group(const char *dir, mode_t mode, const char *user, const char *group);
|
||||
#define run_unstrip_n abrt_run_unstrip_n
|
||||
char *run_unstrip_n(const char *dump_dir_name, unsigned timeout_sec);
|
||||
#define get_backtrace abrt_get_backtrace
|
||||
diff --git a/src/lib/hooklib.c b/src/lib/hooklib.c
|
||||
index 2b76eea..0daa144 100644
|
||||
--- a/src/lib/hooklib.c
|
||||
+++ b/src/lib/hooklib.c
|
||||
@@ -476,23 +476,50 @@ int signal_is_fatal(int signal_no, const char **name)
|
||||
return signame != NULL;
|
||||
}
|
||||
|
||||
-void ensure_writable_dir(const char *dir, mode_t mode, const char *user)
|
||||
+void ensure_writable_dir_uid_gid(const char *dir, mode_t mode, uid_t uid, gid_t gid)
|
||||
{
|
||||
struct stat sb;
|
||||
+ int dir_fd;
|
||||
|
||||
if (mkdir(dir, mode) != 0 && errno != EEXIST)
|
||||
perror_msg_and_die("Can't create '%s'", dir);
|
||||
- if (stat(dir, &sb) != 0 || !S_ISDIR(sb.st_mode))
|
||||
- error_msg_and_die("'%s' is not a directory", dir);
|
||||
|
||||
+ dir_fd = open(dir, O_DIRECTORY | O_NOFOLLOW);
|
||||
+ if (dir_fd < 0)
|
||||
+ perror_msg_and_die("Can't open directory '%s'", dir);
|
||||
+
|
||||
+ if (fstat(dir_fd, &sb) != 0)
|
||||
+ perror_msg_and_die("Can't stat directory '%s'", dir);
|
||||
+
|
||||
+ if ((sb.st_uid != uid || sb.st_gid != gid) && fchown(dir_fd, uid, gid) != 0)
|
||||
+ perror_msg_and_die("Can't set owner %u:%u on '%s'", (unsigned int)uid, (unsigned int)gid, dir);
|
||||
+
|
||||
+ if ((sb.st_mode & 07777) != mode && fchmod(dir_fd, mode) != 0)
|
||||
+ perror_msg_and_die("Can't set mode %o on '%s'", mode, dir);
|
||||
+
|
||||
+ close(dir_fd);
|
||||
+}
|
||||
+
|
||||
+void ensure_writable_dir(const char *dir, mode_t mode, const char *user)
|
||||
+{
|
||||
+ struct passwd *pw = getpwnam(user);
|
||||
+ if (!pw)
|
||||
+ perror_msg_and_die("Can't find user '%s'", user);
|
||||
+
|
||||
+ ensure_writable_dir_uid_gid(dir, mode, pw->pw_uid, pw->pw_gid);
|
||||
+}
|
||||
+
|
||||
+void ensure_writable_dir_group(const char *dir, mode_t mode, const char *user, const char *group)
|
||||
+{
|
||||
struct passwd *pw = getpwnam(user);
|
||||
if (!pw)
|
||||
perror_msg_and_die("Can't find user '%s'", user);
|
||||
|
||||
- if ((sb.st_uid != pw->pw_uid || sb.st_gid != pw->pw_gid) && lchown(dir, pw->pw_uid, pw->pw_gid) != 0)
|
||||
- perror_msg_and_die("Can't set owner %u:%u on '%s'", (unsigned int)pw->pw_uid, (unsigned int)pw->pw_gid, dir);
|
||||
- if ((sb.st_mode & 07777) != mode && chmod(dir, mode) != 0)
|
||||
- perror_msg_and_die("Can't set mode %o on '%s'", mode, dir);
|
||||
+ struct group *gr = getgrnam(group);
|
||||
+ if (!gr)
|
||||
+ perror_msg_and_die("Can't find group '%s'", group);
|
||||
+
|
||||
+ ensure_writable_dir_uid_gid(dir, mode, pw->pw_uid, gr->gr_gid);
|
||||
}
|
||||
|
||||
bool dir_is_in_dump_location(const char *dir_name)
|
||||
--
|
||||
2.6.3
|
||||
|
||||
29
0042-abrtd-switch-owner-of-the-dump-location-to-root.patch
Normal file
29
0042-abrtd-switch-owner-of-the-dump-location-to-root.patch
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
From 5653ddfeb61279df38e80ab18652afa68c964eb6 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Wed, 30 Sep 2015 14:14:31 +0200
|
||||
Subject: [PATCH] abrtd: switch owner of the dump location to 'root'
|
||||
|
||||
Additional hardening suggested by Florian Weimer <fweimer@redhat.com>
|
||||
Related to CVE-2015-5287
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/daemon/abrtd.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrtd.c b/src/daemon/abrtd.c
|
||||
index 0352eed..90a7163 100644
|
||||
--- a/src/daemon/abrtd.c
|
||||
+++ b/src/daemon/abrtd.c
|
||||
@@ -195,7 +195,7 @@ static void sanitize_dump_dir_rights(void)
|
||||
* us with thousands of bogus or malicious dumps */
|
||||
/* 07000 bits are setuid, setgit, and sticky, and they must be unset */
|
||||
/* 00777 bits are usual "rwxrwxrwx" access rights */
|
||||
- ensure_writable_dir(g_settings_dump_location, DEFAULT_DUMP_LOCATION_MODE, "abrt");
|
||||
+ ensure_writable_dir_group(g_settings_dump_location, DEFAULT_DUMP_LOCATION_MODE, "root", "abrt");
|
||||
/* temp dir */
|
||||
ensure_writable_dir(VAR_RUN"/abrt", 0755, "root");
|
||||
}
|
||||
--
|
||||
2.6.3
|
||||
|
||||
28
0044-a-a-save-package-data-do-not-blacklist-firefox.patch
Normal file
28
0044-a-a-save-package-data-do-not-blacklist-firefox.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
From b0d5570f1d0f12adf8e00a39c60e7c5da367fd07 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Wed, 3 Feb 2016 14:41:48 +0100
|
||||
Subject: [PATCH] a-a-save-package-data: do not blacklist firefox
|
||||
|
||||
Resolves: rhbz#1304310
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/daemon/abrt-action-save-package-data.conf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
|
||||
index 0129399..58f5061 100644
|
||||
--- a/src/daemon/abrt-action-save-package-data.conf
|
||||
+++ b/src/daemon/abrt-action-save-package-data.conf
|
||||
@@ -7,7 +7,7 @@ OpenGPGCheck = yes
|
||||
|
||||
# Blacklisted packages
|
||||
#
|
||||
-BlackList = nspluginwrapper, valgrind, strace, mono-core, firefox, bash
|
||||
+BlackList = nspluginwrapper, valgrind, strace, mono-core, bash
|
||||
|
||||
# Process crashes in executables which do not belong to any package?
|
||||
#
|
||||
--
|
||||
2.5.0
|
||||
|
||||
94
0045-ccpp-drop-e-from-the-core_pattern.patch
Normal file
94
0045-ccpp-drop-e-from-the-core_pattern.patch
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
From 3c4bbdee2059525fafdd6b32a6c85cf2358febe4 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Wed, 10 Feb 2016 14:53:44 +0100
|
||||
Subject: [PATCH] ccpp: drop %e from the core_pattern
|
||||
|
||||
The argument is no longer need and it must be placed either at the end
|
||||
of the command or enclosed with '' as it can contain white space.
|
||||
|
||||
Threads can have an arbitrary name:
|
||||
man 3 pthread_setname_np
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
src/hooks/abrt-hook-ccpp.c | 16 ++++++++--------
|
||||
src/hooks/abrt-install-ccpp-hook.in | 12 +-----------
|
||||
2 files changed, 9 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
|
||||
index 58d9c28..ac60840 100644
|
||||
--- a/src/hooks/abrt-hook-ccpp.c
|
||||
+++ b/src/hooks/abrt-hook-ccpp.c
|
||||
@@ -142,9 +142,9 @@ static struct dump_dir *dd;
|
||||
* %u - uid
|
||||
* %g - gid
|
||||
* %t - UNIX time of dump
|
||||
- * %e - executable filename
|
||||
- * %i - crash thread tid
|
||||
* %P - global pid
|
||||
+ * %I - crash thread tid
|
||||
+ * %e - executable filename (can contain white spaces)
|
||||
* %% - output one "%"
|
||||
*/
|
||||
/* Hook must be installed with exactly the same sequence of %c specifiers.
|
||||
@@ -559,9 +559,9 @@ int main(int argc, char** argv)
|
||||
|
||||
if (argc < 8)
|
||||
{
|
||||
- /* percent specifier: %s %c %p %u %g %t %e %P %i*/
|
||||
- /* argv: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]*/
|
||||
- error_msg_and_die("Usage: %s SIGNO CORE_SIZE_LIMIT PID UID GID TIME BINARY_NAME GLOBAL_PID [TID]", argv[0]);
|
||||
+ /* percent specifier: %s %c %p %u %g %t %P %T */
|
||||
+ /* argv: [0] [1] [2] [3] [4] [5] [6] [7] [8] */
|
||||
+ error_msg_and_die("Usage: %s SIGNO CORE_SIZE_LIMIT PID UID GID TIME GLOBAL_PID GLOBAL_TID", argv[0]);
|
||||
}
|
||||
|
||||
/* Not needed on 2.6.30.
|
||||
@@ -604,11 +604,11 @@ int main(int argc, char** argv)
|
||||
else
|
||||
free(s);
|
||||
}
|
||||
- const char *global_pid_str = argv[8];
|
||||
- pid_t pid = xatoi_positive(argv[8]);
|
||||
+ const char *global_pid_str = argv[7];
|
||||
+ pid_t pid = xatoi_positive(argv[7]);
|
||||
|
||||
pid_t tid = -1;
|
||||
- const char *tid_str = argv[9];
|
||||
+ const char *tid_str = argv[8];
|
||||
if (tid_str)
|
||||
{
|
||||
tid = xatoi_positive(tid_str);
|
||||
diff --git a/src/hooks/abrt-install-ccpp-hook.in b/src/hooks/abrt-install-ccpp-hook.in
|
||||
index 707c57d..660c209 100755
|
||||
--- a/src/hooks/abrt-install-ccpp-hook.in
|
||||
+++ b/src/hooks/abrt-install-ccpp-hook.in
|
||||
@@ -11,9 +11,7 @@ SAVED_PATTERN_DIR="@VAR_RUN@/abrt"
|
||||
SAVED_PATTERN_FILE="@VAR_RUN@/abrt/saved_core_pattern"
|
||||
HOOK_BIN="@libexecdir@/abrt-hook-ccpp"
|
||||
# Must match percent_specifiers[] order in abrt-hook-ccpp.c:
|
||||
-PATTERN="|$HOOK_BIN %s %c %p %u %g %t %e %P %I"
|
||||
-# Same, but with bogus "executable name" parameter
|
||||
-PATTERN1="|$HOOK_BIN %s %c %p %u %g %t e %P %I"
|
||||
+PATTERN="|$HOOK_BIN %s %c %p %u %g %t %P %I"
|
||||
|
||||
# core_pipe_limit specifies how many dump_helpers can run at the same time
|
||||
# 0 - means unlimited, but it's not guaranteed that /proc/<pid> of crashing
|
||||
@@ -39,14 +37,6 @@ start() {
|
||||
cur=`cat "$PATTERN_FILE"`
|
||||
cur_first=`printf "%s" "$cur" | sed 's/ .*//'`
|
||||
|
||||
- # Is there a %e (executable name) in old pattern anywhere?
|
||||
- if test x"${cur#*%e}" = x"${cur}"; then
|
||||
- # No. Can use PATTERN with less risk of overflow
|
||||
- # on expansion (executable names can be LONG).
|
||||
- # Overflow would cause kernel to abort coredump. BAD.
|
||||
- PATTERN="$PATTERN1"
|
||||
- fi
|
||||
-
|
||||
$verbose && printf "cur:'%s'\n" "$cur"
|
||||
# Is it already installed?
|
||||
if test x"$cur_first" != x"|$HOOK_BIN"; then # no
|
||||
--
|
||||
2.5.0
|
||||
|
||||
92374
0048-Translation-updates.patch
Normal file
92374
0048-Translation-updates.patch
Normal file
File diff suppressed because it is too large
Load diff
26
0049-translations-add-missing-new-line.patch
Normal file
26
0049-translations-add-missing-new-line.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 3f81e0d5fce5b2f30ec19e260cc666f3ae89c034 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Filak <jfilak@redhat.com>
|
||||
Date: Thu, 11 Feb 2016 15:26:27 +0100
|
||||
Subject: [PATCH] translations: add missing new line
|
||||
|
||||
Signed-off-by: Jakub Filak <jfilak@redhat.com>
|
||||
---
|
||||
po/km.po | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/po/km.po b/po/km.po
|
||||
index 84bb1b1..ab7a684 100644
|
||||
--- a/po/km.po
|
||||
+++ b/po/km.po
|
||||
@@ -137,7 +137,7 @@ msgid ""
|
||||
"\n"
|
||||
"Applet which notifies user when new problems are detected by ABRT\n"
|
||||
msgstr ""
|
||||
-"Applet ដែលបានជូនដំណឹងអ្នកប្រើនៅពេលដែលមានបញ្ហាថ្មីត្រូវបានរកឃើញដោយ ABRT"
|
||||
+"Applet ដែលបានជូនដំណឹងអ្នកប្រើនៅពេលដែលមានបញ្ហាថ្មីត្រូវបានរកឃើញដោយ ABRT\n"
|
||||
|
||||
#: ../src/configuration-gui/abrt-config-widget.c:483
|
||||
msgid ""
|
||||
--
|
||||
2.5.0
|
||||
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
From a587ec0e3f2adc76445afc732d798e2d7cd33c02 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 16 Feb 2016 10:53:06 +0100
|
||||
Subject: [PATCH] a-a-save-package-data: blacklist
|
||||
/usr/lib(64)/firefox/plugin-container
|
||||
|
||||
/usr/lib(64)/firefox/plugin-container is a sandbox/launcher for Firefox
|
||||
plug-ins. When it crases Firefox loads it again so we don't want those crashes
|
||||
reported.
|
||||
|
||||
Related to: rhbz#1308840
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/daemon/abrt-action-save-package-data.conf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
|
||||
index 58f5061..f3a808f 100644
|
||||
--- a/src/daemon/abrt-action-save-package-data.conf
|
||||
+++ b/src/daemon/abrt-action-save-package-data.conf
|
||||
@@ -15,7 +15,7 @@ ProcessUnpackaged = yes
|
||||
|
||||
# Blacklisted executable paths (shell patterns)
|
||||
#
|
||||
-BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer
|
||||
+BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer, /usr/lib*/firefox/plugin-container
|
||||
|
||||
# interpreters names
|
||||
Interpreters = python2, python2.7, python, python3, python3.3, python3.4, python3.5, perl, perl5.16.2
|
||||
--
|
||||
2.5.0
|
||||
|
||||
85
0052-a-a-install-debuginfo-make-tmpdir-variable-global.patch
Normal file
85
0052-a-a-install-debuginfo-make-tmpdir-variable-global.patch
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
From 894ced59cc43dfda99a393154026181b0bf61784 Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 8 Mar 2016 16:42:31 +0100
|
||||
Subject: [PATCH] a-a-install-debuginfo: make tmpdir variable global
|
||||
|
||||
Function clean_up() has one required parameter tmpdir.
|
||||
Without this commit clean_up() function raises an exception because it was
|
||||
called without the parameter.
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-action-install-debuginfo.in | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-action-install-debuginfo.in b/src/plugins/abrt-action-install-debuginfo.in
|
||||
index 73ff82f..bb72695 100644
|
||||
--- a/src/plugins/abrt-action-install-debuginfo.in
|
||||
+++ b/src/plugins/abrt-action-install-debuginfo.in
|
||||
@@ -20,7 +20,8 @@ import problem
|
||||
RETURN_OK = 0
|
||||
# serious problem, should be logged somewhere
|
||||
RETURN_FAILURE = 2
|
||||
-
|
||||
+# path to tmp directory has to be global because of clean_up()
|
||||
+TMPDIR = None
|
||||
|
||||
GETTEXT_PROGNAME = "abrt"
|
||||
import locale
|
||||
@@ -43,11 +44,11 @@ def init_gettext():
|
||||
gettext.textdomain(GETTEXT_PROGNAME)
|
||||
|
||||
def sigterm_handler(signum, frame):
|
||||
- clean_up()
|
||||
+ clean_up(TMPDIR)
|
||||
exit(RETURN_OK)
|
||||
|
||||
def sigint_handler(signum, frame):
|
||||
- clean_up()
|
||||
+ clean_up(TMPDIR)
|
||||
print("\n{0}".format(_("Exiting on user command")))
|
||||
sys.stdout.flush()
|
||||
# ??! without "sys.", I am getting segv!
|
||||
@@ -63,7 +64,6 @@ if __name__ == "__main__":
|
||||
fbuild_ids = "build_ids"
|
||||
cachedirs = []
|
||||
size_mb = 4096
|
||||
- tmpdir = None
|
||||
keeprpms = False
|
||||
noninteractive = False
|
||||
b_ids = []
|
||||
@@ -135,7 +135,7 @@ if __name__ == "__main__":
|
||||
except:
|
||||
pass
|
||||
elif opt == "--tmpdir":
|
||||
- tmpdir = arg
|
||||
+ TMPDIR = arg
|
||||
elif opt == "--keeprpms":
|
||||
keeprpms = True
|
||||
# --exact takes precendece over --ids
|
||||
@@ -159,11 +159,11 @@ if __name__ == "__main__":
|
||||
|
||||
if not cachedirs:
|
||||
cachedirs = ["/var/cache/abrt-di"]
|
||||
- if not tmpdir:
|
||||
+ if not TMPDIR:
|
||||
# security people prefer temp subdirs in app's private dir, like /var/run/abrt
|
||||
# and we switched to /tmp but Fedora feature tmp-on-tmpfs appeared, hence we must
|
||||
# not use /tmp for potential big data anymore
|
||||
- tmpdir = "@LARGE_DATA_TMP_DIR@/abrt-tmp-debuginfo-%s.%u" % (time.strftime("%Y-%m-%d-%H:%M:%S"), os.getpid())
|
||||
+ TMPDIR = "@LARGE_DATA_TMP_DIR@/abrt-tmp-debuginfo-%s.%u" % (time.strftime("%Y-%m-%d-%H:%M:%S"), os.getpid())
|
||||
|
||||
|
||||
if missing == None:
|
||||
@@ -235,7 +235,7 @@ if __name__ == "__main__":
|
||||
sys.exit(RETURN_FAILURE)
|
||||
|
||||
# TODO: should we pass keep_rpms=keeprpms to DebugInfoDownload here??
|
||||
- downloader = download_class(cache=cachedirs[0], tmp=tmpdir,
|
||||
+ downloader = download_class(cache=cachedirs[0], tmp=TMPDIR,
|
||||
noninteractive=noninteractive,
|
||||
repo_pattern=repo_pattern)
|
||||
try:
|
||||
--
|
||||
2.5.5
|
||||
|
||||
49
0053-a-a-install-debuginfo-fix-BrokenPipe-error.patch
Normal file
49
0053-a-a-install-debuginfo-fix-BrokenPipe-error.patch
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
From 9c58a7bbd6def445ba1d1faaf7a3c2960ba2819e Mon Sep 17 00:00:00 2001
|
||||
From: Matej Habrnal <mhabrnal@redhat.com>
|
||||
Date: Tue, 8 Mar 2016 16:45:36 +0100
|
||||
Subject: [PATCH] a-a-install-debuginfo: fix BrokenPipe error
|
||||
|
||||
While debug info is downloading and stop button is pressed the BrokenPipe
|
||||
error appears.
|
||||
|
||||
If the stop button is pressed, gui wizard sends SIGTERM to all
|
||||
processes with the same group ID so abrt-action-install-debuginfo got SIGTERM
|
||||
as well. It has its own SIGTERM handler which calls clean_up() function and it
|
||||
takes a while before the tool is terminated.
|
||||
abrt-action-install-debuginfo tries to write some messages to the closed socket
|
||||
during the clean_up process and it raises a BrokenPipe exception. We must
|
||||
ensure that no message will be printed after SIGTERM is recieved.
|
||||
|
||||
Related to: #1255259
|
||||
|
||||
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
|
||||
---
|
||||
src/plugins/abrt-action-install-debuginfo.in | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/plugins/abrt-action-install-debuginfo.in b/src/plugins/abrt-action-install-debuginfo.in
|
||||
index bb72695..f9eb596 100644
|
||||
--- a/src/plugins/abrt-action-install-debuginfo.in
|
||||
+++ b/src/plugins/abrt-action-install-debuginfo.in
|
||||
@@ -44,7 +44,7 @@ def init_gettext():
|
||||
gettext.textdomain(GETTEXT_PROGNAME)
|
||||
|
||||
def sigterm_handler(signum, frame):
|
||||
- clean_up(TMPDIR)
|
||||
+ clean_up(TMPDIR, silent=True)
|
||||
exit(RETURN_OK)
|
||||
|
||||
def sigint_handler(signum, frame):
|
||||
@@ -241,6 +241,9 @@ if __name__ == "__main__":
|
||||
try:
|
||||
result = downloader.download(missing, download_exact_files=exact_fls)
|
||||
except Exception as ex:
|
||||
+ if ex.errno == errno.EPIPE:
|
||||
+ clean_up(TMPDIR, silent=True)
|
||||
+ exit(RETURN_FAILURE)
|
||||
error_msg_and_die("Can't download debuginfos: %s", ex)
|
||||
|
||||
if exact_fls:
|
||||
--
|
||||
2.5.5
|
||||
|
||||
26
disable-OpenGPGCheck-in-Fedora-Rawhide.patch
Normal file
26
disable-OpenGPGCheck-in-Fedora-Rawhide.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 1ef034096efe367af85f568bc982af969124003b Mon Sep 17 00:00:00 2001
|
||||
From: rpm-build <rpm-build>
|
||||
Date: Mon, 10 Feb 2014 09:39:07 +0100
|
||||
Subject: [PATCH] disable OpenGPGCheck in Fedora Rawhide
|
||||
|
||||
Packages in Fedora Rawhide are not signed.
|
||||
---
|
||||
src/daemon/abrt-action-save-package-data.conf | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
|
||||
index 3d35bb6..e3f724a 100644
|
||||
--- a/src/daemon/abrt-action-save-package-data.conf
|
||||
+++ b/src/daemon/abrt-action-save-package-data.conf
|
||||
@@ -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
|
||||
#
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
15
gating.yaml
15
gating.yaml
|
|
@ -1,15 +0,0 @@
|
|||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_testing
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_stable
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (abrt-2.17.8.tar.gz) = 90b74229412e0186bfa109ee940a60c9f3c0f7ce8c1216acad6f05619a1bb591e7f0bae87363143a05034312c9f14fe5ace341b84f680780ceb93a1e624705b3
|
||||
936fa2b51d58d5c00729b8512ffa2a68 abrt-2.6.1.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
summary: Basic smoke test for abrt
|
||||
prepare:
|
||||
how: install
|
||||
# Do not attempt to install conflicting subpackages.
|
||||
exclude:
|
||||
- abrt-atomic
|
||||
- abrt-java-connector-container
|
||||
- python3-abrt-container-addon
|
||||
execute:
|
||||
script: abrt-action-notify --help
|
||||
Loading…
Add table
Add a link
Reference in a new issue