Compare commits

...
Sign in to create a new pull request.

17 commits

Author SHA1 Message Date
Matej Habrnal
62f98d6aac a-a-install-debuginfo: fix BrokenPipe error
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2016-04-12 11:29:01 +02:00
Matej Habrnal
95e1e93295 blacklist Firefox's plugin-container and translation updates 2016-02-23 16:19:04 +01:00
Matej Habrnal
3989c835a1 drop %e from the core_pattern
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2016-02-10 15:03:40 +01:00
Matej Habrnal
ff93696553 a-a-save-package-data: do not blacklist firefox
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2016-02-03 15:53:39 +01:00
Jakub Filak
d596add397 CVE-2015-5273, CVE-2015-5287, coredumpctl
Resolves: #1262252, #1284557
2015-11-25 11:30:00 +01:00
Matej Habrnal
af7973f3e9 support Xorg log backtraces prefixed by (EE) and bug fixes
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2015-10-16 10:37:13 +02:00
Matej Habrnal
60adb8e27a bodhi: fix a segfault when testing an os-release opt for 'rawhide'
and actualize the abrt-bodhi man page

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2015-09-17 12:56:22 +02:00
Matej Habrnal
fc77ae9a35 Bug fixes
- introduce bodhi2 to abrt-bodhi
- don't start reporting of not-reportable problems
- add hawkey to BRs of abrt-bodhi
- add bash on the package blacklist

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2015-08-27 10:35:32 +02:00
Matej Habrnal
36fd7e2734 Fix bugs in a-auto-reporting, dbus, a-hook-ccpp, abrt-cli and pstoreoops
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2015-08-14 15:11:48 +02:00
Jakub Filak
c8398286fa Bug fixes, priority, koops components
Resolves: #1236422, #1243791
2015-07-21 18:22:18 +02:00
Matej Habrnal
57686f5cee New upstream release 2.6.1
Resolves #1240516
2015-07-08 10:47:13 +02:00
Jakub Filak
2407785f44 New upstream release 2.6.0 2015-06-10 11:43:15 +02:00
Matej Habrnal
30183d6308 Automatic reporting from GSettings, Spelling/grammar fixes and another fixes
Resolves #1211644

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2015-05-20 16:17:57 +02:00
Jakub Filak
f3e5f01db5 Remove a no longer needed posttrans scriptlet
The scriptlet was making a copy of 'analyzer' file to 'type' file,
because there was no 'type' file long time ago, a new version
started requiring that element, thus we had to add a scriptlet
creating that problem element for the problems detected by older
versions of abrt (prior abrt-2.5.0, contents of analyzer was the same as
contents of type).
2015-04-14 08:35:34 +02:00
Jakub Filak
0e4b4cd798 New upstream release 2.5.1
Resolves: #1205439
2015-04-09 10:27:14 +02:00
Jakub Filak
60c9139c8f applet: fix notifications at startup 2015-03-20 08:30:28 +01:00
Jakub Filak
22fc4da4ae New upstream release 2.5.0
Resolves: #1200852
2015-03-18 13:55:41 +01:00
65 changed files with 96024 additions and 160498 deletions

5
.gitignore vendored
View file

@ -38,3 +38,8 @@ abrt-1.1.13.tar.gz
/abrt-2.2.1.tar.gz
/abrt-2.2.2.tar.gz
/abrt-2.3.0.tar.gz
/abrt-2.4.0.tar.gz
/abrt-2.5.0.tar.gz
/abrt-2.5.1.tar.gz
/abrt-2.6.0.tar.gz
/abrt-2.6.1.tar.gz

File diff suppressed because it is too large Load diff

View 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

View 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

View 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

View file

@ -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

View 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

View 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

View file

@ -1,48 +0,0 @@
From b7332b068c11ec16c190472684334944abb3607b Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 9 Oct 2014 16:28:12 +0200
Subject: [PATCH] console-notifications: use return instead of exit
Thanks Ray Strode [halfline] <rstrode@redhat.com>
Related to rhbz#1150169
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/cli/abrt-console-notification.sh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
index 849273c..38de7bb 100755
--- a/src/cli/abrt-console-notification.sh
+++ b/src/cli/abrt-console-notification.sh
@@ -1,13 +1,13 @@
-# If shell is not connect to a terminal, exit immediately, because this script
+# If shell is not connect to a terminal, return immediately, because this script
# should print out ABRT's status and it is senseless to continue without
# terminal.
-tty -s || exit 0
+tty -s || return 0
# If $HOME is not set, a non human user is logging in to shell but this script
-# should provide information to human users, therefore exiting immediately
+# should provide information to human users, therefore returning immediately
# without showing the notification.
if [ -z "$HOME" ]; then
- exit 0
+ return 0
fi
if [ -z "$ABRT_DEBUG_LOG" ]; then
@@ -19,7 +19,7 @@ SINCEFILE="$LPATHDIR/lastnotification"
if [ ! -f "$LPATHDIR" ]; then
# It might happen that user doesn't have write access on his home.
- mkdir -p "$LPATHDIR" >"$ABRT_DEBUG_LOG" 2>&1 || exit 0
+ mkdir -p "$LPATHDIR" >"$ABRT_DEBUG_LOG" 2>&1 || return 0
fi
TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"`
--
2.1.0

View file

@ -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

View file

@ -1,85 +0,0 @@
From 9ef1d95f9556db4fdf02b283e1602b9e63b693c8 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 9 Oct 2014 10:24:42 +0200
Subject: [PATCH] ureport: attach contact email if configured
Related to rhbz#1150389
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-ureport | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/src/plugins/abrt-action-ureport b/src/plugins/abrt-action-ureport
index 1abe7b3..df5f3d3 100755
--- a/src/plugins/abrt-action-ureport
+++ b/src/plugins/abrt-action-ureport
@@ -8,6 +8,7 @@
import sys
import os
import getopt
+import augeas
from report import dd_opendir, DD_FAIL_QUIETLY_ENOENT, run_event_state
from reportclient import set_verbosity, error_msg_and_die, error_msg, log1, log
@@ -33,12 +34,30 @@ def init_gettext():
gettext.textdomain(GETTEXT_PROGNAME)
-def spawn_and_wait(prog):
+def get_augeas(module, file_path):
+ """
+ A function for efficient configuration of Augeas.
+ Augeas modules are placed in /usr/share/augeas/lenses/dist
+ """
+
+ aug_obj = augeas.Augeas(flags=augeas.Augeas.NO_MODL_AUTOLOAD)
+ aug_obj.set("/augeas/load/{0}/lens".format(module), "{0}.lns".format(module))
+ aug_obj.set("/augeas/load/{0}/incl".format(module), file_path)
+ aug_obj.load()
+ return aug_obj
+
+
+def spawn_and_wait(prog, args=None):
+ if args is None:
+ args = [prog]
+ else:
+ args.insert(0, prog)
+
try:
- return os.spawnlp(os.P_WAIT, prog, prog)
+ return os.spawnvpe(os.P_WAIT, prog, args, os.environ)
except OSError as err:
error_msg(_("Unable to start '%s', error message was: '%s'"),
- prog, err)
+ " ".join(args), err)
return -1
def try_parse_number(dd, filename):
@@ -92,6 +111,7 @@ if __name__ == "__main__":
verbose += 1
set_verbosity(verbose)
+ os.environ["ABRT_VERBOSE"] = str(verbose)
# getcwd might fail if cwd was deleted
try:
@@ -159,6 +179,15 @@ if __name__ == "__main__":
log(_("Adding you to CC List of the existing bugzilla bug"))
run_event("watch_Bugzilla", dirname)
+ email = os.getenv("uReport_ContactEmail")
+ if not email:
+ augeas = get_augeas("libreport", "/etc/libreport/plugins/ureport.conf")
+ email = augeas.get("/files/etc/libreport/plugins/ureport.conf/ContactEmail")
+
+ if email:
+ log1("Attaching ContactEmail: " + email)
+ spawn_and_wait("reporter-ureport", ["-A", "-E"])
+
sys.exit(exitcode)
else:
error_msg_and_die(_("reporter-ureport failed with exit code %d" % exitcode))
--
2.1.0

View file

@ -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

View file

@ -1,28 +0,0 @@
From ad9e9d1609fd9e1365bf558f15c62ecb21304911 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 10 Oct 2014 11:18:51 +0200
Subject: [PATCH] applet: don't show duphash instead of component
Related to rhbz#1084031
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/applet/applet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/applet/applet.c b/src/applet/applet.c
index 0ae8c72..90c5b0d 100644
--- a/src/applet/applet.c
+++ b/src/applet/applet.c
@@ -1331,7 +1331,7 @@ static void Crash(DBusMessage* signal)
if (duphash != NULL && duphash[0] != '\0')
problem_data_add_text_noteditable(pi->problem_data, FILENAME_DUPHASH, duphash);
if (package_name != NULL && package_name[0] != '\0')
- problem_data_add_text_noteditable(pi->problem_data, FILENAME_COMPONENT, duphash);
+ problem_data_add_text_noteditable(pi->problem_data, FILENAME_COMPONENT, package_name);
pi->foreign = foreign_problem;
show_problem_notification(pi, flags);
}
--
2.1.0

View file

@ -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

View file

@ -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

View file

@ -1,30 +0,0 @@
From ab46bc9d85331fca923853353663c0ce0edc3716 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Sat, 11 Oct 2014 00:05:07 +0200
Subject: [PATCH] console-notifications: skip non-interactive shells
Related to rhbz#1141485
Related to rhbz#1139001
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/cli/abrt-console-notification.sh | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
index 38de7bb..976dfc3 100755
--- a/src/cli/abrt-console-notification.sh
+++ b/src/cli/abrt-console-notification.sh
@@ -3,6 +3,9 @@
# terminal.
tty -s || return 0
+# Skip all for noninteractive shells for the same reason as above.
+[ -z "$PS1" ] && return 0
+
# If $HOME is not set, a non human user is logging in to shell but this script
# should provide information to human users, therefore returning immediately
# without showing the notification.
--
2.1.0

View file

@ -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

View 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

View 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

View file

@ -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

View 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

View 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

View file

@ -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

View 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

View 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

View 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

View file

@ -1,158 +0,0 @@
From 2e74ca0f15d6d25568f5af1cc9cd30b4b01aa849 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 14 Oct 2014 03:15:28 +0200
Subject: [PATCH] journal-oops: use the length result of sd_journal_get_data()
journald doesn't guarantee NULL terminated strings returned from
sd_journal_get_data(). It usually works but not always.
This patch fixes the issue by using the length of field data instead of
assuming that string is NULL terminated.
Resolves: #1141549
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-dump-journal-oops.c | 13 ++++++-----
src/plugins/abrt-journal.c | 43 ++++++++++++++++++++++--------------
src/plugins/abrt-journal.h | 8 ++++---
3 files changed, 40 insertions(+), 24 deletions(-)
diff --git a/src/plugins/abrt-dump-journal-oops.c b/src/plugins/abrt-dump-journal-oops.c
index 3f1f419..0ff9fe0 100644
--- a/src/plugins/abrt-dump-journal-oops.c
+++ b/src/plugins/abrt-dump-journal-oops.c
@@ -38,8 +38,8 @@ static GList* abrt_journal_extract_kernel_oops(abrt_journal_t *journal)
do
{
- const char *line = NULL;
- if (abrt_journal_get_log_line(journal, &line) < 0)
+ char *line = abrt_journal_get_log_line(journal);
+ if (line == NULL)
error_msg_and_die(_("Cannot read journal data."));
if (lines_info_count == lines_info_size)
@@ -48,10 +48,13 @@ static GList* abrt_journal_extract_kernel_oops(abrt_journal_t *journal)
lines_info = xrealloc(lines_info, lines_info_size * sizeof(lines_info[0]));
}
- lines_info[lines_info_count].level = koops_line_skip_level(&line);
- koops_line_skip_jiffies(&line);
+ char *orig_line = line;
+ lines_info[lines_info_count].level = koops_line_skip_level((const char **)&line);
+ koops_line_skip_jiffies((const char **)&line);
- lines_info[lines_info_count].ptr = xstrdup(line);
+ memmove(orig_line, line, strlen(line) + 1);
+
+ lines_info[lines_info_count].ptr = orig_line;
++lines_info_count;
}
diff --git a/src/plugins/abrt-journal.c b/src/plugins/abrt-journal.c
index 89c8393..e0ae159 100644
--- a/src/plugins/abrt-journal.c
+++ b/src/plugins/abrt-journal.c
@@ -23,6 +23,12 @@
#include <systemd/sd-journal.h>
+/*
+ * http://www.freedesktop.org/software/systemd/man/sd_journal_get_data.html
+ * sd_journal_set_data_threshold() : This threshold defaults to 64K by default.
+ */
+#define JOURNALD_MAX_FIELD_SIZE (64*1024)
+
struct abrt_journal
{
@@ -84,33 +90,38 @@ int abrt_journal_get_field(abrt_journal_t *journal, const char *field, const voi
return 0;
}
-int abrt_journal_get_string_field(abrt_journal_t *journal, const char *field, const char **value)
+char *abrt_journal_get_string_field(abrt_journal_t *journal, const char *field, char *value)
{
- size_t value_len;
- const int r = abrt_journal_get_field(journal, field, (const void **)value, &value_len);
+ size_t data_len;
+ const char *data;
+ const int r = abrt_journal_get_field(journal, field, (const void **)&data, &data_len);
if (r < 0)
{
- return r;
+ log_notice("Cannot read journal data");
+ return NULL;
}
const size_t pfx_len = strlen(field) + 1;
- if (value_len < pfx_len)
+ if (data_len < pfx_len)
{
error_msg("Invalid data format from journal: field data are not prefixed with field name");
- return -EBADMSG;
+ return NULL;
}
- *value += pfx_len;
- return 0;
+ const size_t len = data_len - pfx_len;
+ if (value == NULL)
+ return xstrndup(data + pfx_len, len);
+ /*else*/
+
+ strncpy(value, data + pfx_len, len);
+ /* journal data are not NULL terminated strings, so terminate the string */
+ value[len] = '\0';
+ return value;
}
-int abrt_journal_get_log_line(abrt_journal_t *journal, const char **line)
+char *abrt_journal_get_log_line(abrt_journal_t *journal)
{
- const int r = abrt_journal_get_string_field(journal, "MESSAGE", line);
- if (r < 0)
- log_notice("Cannot read journal data. Exiting");
-
- return r;
+ return abrt_journal_get_string_field(journal, "MESSAGE", NULL);
}
int abrt_journal_get_cursor(abrt_journal_t *journal, char **cursor)
@@ -272,9 +283,9 @@ void abrt_journal_watch_notify_strings(abrt_journal_watch_t *watch, void *data)
{
struct abrt_journal_watch_notify_strings *conf = (struct abrt_journal_watch_notify_strings *)data;
- const char *message = NULL;
+ char message[JOURNALD_MAX_FIELD_SIZE + 1];
- if (abrt_journal_get_string_field(abrt_journal_watch_get_journal(watch), "MESSAGE", &message) < 0)
+ if (abrt_journal_get_string_field(abrt_journal_watch_get_journal(watch), "MESSAGE", (char *)message) == NULL)
error_msg_and_die("Cannot read journal data.");
GList *cur = conf->strings;
diff --git a/src/plugins/abrt-journal.h b/src/plugins/abrt-journal.h
index 219cf60..d509d96 100644
--- a/src/plugins/abrt-journal.h
+++ b/src/plugins/abrt-journal.h
@@ -40,11 +40,13 @@ int abrt_journal_get_field(abrt_journal_t *journal,
const void **value,
size_t *value_len);
-int abrt_journal_get_string_field(abrt_journal_t *journal,
+/* Returns allocated memory if value is NULL; otherwise makes copy of journald
+ * field to memory pointed by value arg. */
+char *abrt_journal_get_string_field(abrt_journal_t *journal,
const char *field,
- const char **value);
+ char *value);
-int abrt_journal_get_log_line(abrt_journal_t *journal, const char **line);
+char *abrt_journal_get_log_line(abrt_journal_t *journal);
int abrt_journal_get_cursor(abrt_journal_t *journal, char **cursor);
--
2.1.0

View 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

View 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

View file

@ -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

View file

@ -1,102 +0,0 @@
From 105aab5e018efa7d68e06ff648d0dc9e434e20d2 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Wed, 15 Oct 2014 13:33:51 +0200
Subject: [PATCH] make ABRT quieter
Related: #1048384, #1147664
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrtd.c | 7 +++++--
src/hooks/abrt-hook-ccpp.c | 10 +++++-----
src/plugins/abrt-action-generate-core-backtrace.c | 2 +-
3 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/daemon/abrtd.c b/src/daemon/abrtd.c
index b8426dd..cce49eb 100644
--- a/src/daemon/abrtd.c
+++ b/src/daemon/abrtd.c
@@ -626,7 +626,7 @@ int main(int argc, char** argv)
s_signal_pipe_write = s_signal_pipe[1];
/* Enter the event loop */
- log("Init complete, entering main loop");
+ log_debug("Init complete, entering main loop");
run_main_loop(pMainloop);
cleanup:
@@ -652,7 +652,10 @@ int main(int argc, char** argv)
/* Exiting */
if (s_sig_caught && s_sig_caught != SIGALRM && s_sig_caught != SIGCHLD)
{
- error_msg("Got signal %d, exiting", s_sig_caught);
+ /* We use TERM to stop abrtd, so not printing out error message. */
+ if (s_sig_caught != SIGTERM)
+ error_msg("Got signal %d, exiting", s_sig_caught);
+
signal(s_sig_caught, SIG_DFL);
raise(s_sig_caught);
}
diff --git a/src/hooks/abrt-hook-ccpp.c b/src/hooks/abrt-hook-ccpp.c
index 8e141d4..6f471e9 100644
--- a/src/hooks/abrt-hook-ccpp.c
+++ b/src/hooks/abrt-hook-ccpp.c
@@ -184,13 +184,13 @@ static char* get_executable(pid_t pid, int *fd_p)
if (deleted > executable && strcmp(deleted, " (deleted)") == 0)
{
*deleted = '\0';
- log("File '%s' seems to be deleted", executable);
+ log_info("File '%s' seems to be deleted", executable);
}
/* find and cut off prelink suffixes from the path */
char *prelink = executable + strlen(executable) - strlen(".#prelink#.XXXXXX");
if (prelink > executable && strncmp(prelink, ".#prelink#.", strlen(".#prelink#.")) == 0)
{
- log("File '%s' seems to be a prelink temporary file", executable);
+ log_info("File '%s' seems to be a prelink temporary file", executable);
*prelink = '\0';
}
return executable;
@@ -649,7 +649,7 @@ int main(int argc, char** argv)
* but it does not log file name */
error_msg_and_die("Error saving '%s'", path);
}
- log("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
+ log_notice("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
return 0;
}
@@ -836,7 +836,7 @@ int main(int argc, char** argv)
strcpy(path, newpath);
free(newpath);
- log("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
+ log_notice("Saved core dump of pid %lu (%s) to %s (%llu bytes)", (long)pid, executable, path, (long long)core_size);
notify_new_path(path);
@@ -874,7 +874,7 @@ int main(int argc, char** argv)
unlink(core_basename);
return 1;
}
- log("Saved core dump of pid %lu to %s (%llu bytes)", (long)pid, full_core_basename, (long long)core_size);
+ log_notice("Saved core dump of pid %lu to %s (%llu bytes)", (long)pid, full_core_basename, (long long)core_size);
}
return 0;
diff --git a/src/plugins/abrt-action-generate-core-backtrace.c b/src/plugins/abrt-action-generate-core-backtrace.c
index a992a5b..791af83 100644
--- a/src/plugins/abrt-action-generate-core-backtrace.c
+++ b/src/plugins/abrt-action-generate-core-backtrace.c
@@ -61,7 +61,7 @@ int main(int argc, char **argv)
sr_debug_parser = true;
/* Let user know what's going on */
- log(_("Generating core_backtrace"));
+ log_notice(_("Generating core_backtrace"));
char *error_message = NULL;
bool success;
--
2.1.0

View 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

View 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

View file

@ -1,128 +0,0 @@
From 0a0f129a6622fd7099de8cec6a1d95a4189a91d1 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 21 Oct 2014 14:57:10 +0200
Subject: [PATCH] applet: ensure writable dump directory before reporting
Related to rhbz#1084027
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/applet/applet.c | 62 ++++++++++++++++++++++++++++++++++-------------------
1 file changed, 40 insertions(+), 22 deletions(-)
diff --git a/src/applet/applet.c b/src/applet/applet.c
index 90c5b0d..644da60 100644
--- a/src/applet/applet.c
+++ b/src/applet/applet.c
@@ -307,6 +307,7 @@ typedef struct problem_info {
bool incomplete;
bool reported;
bool was_announced;
+ bool is_writable;
} problem_info_t;
static void push_to_deferred_queue(problem_info_t *pi)
@@ -324,6 +325,36 @@ static void problem_info_set_dir(problem_info_t *pi, const char *dir)
problem_data_add_text_noteditable(pi->problem_data, CD_DUMPDIR, dir);
}
+static bool problem_info_ensure_writable(problem_info_t *pi)
+{
+ if (pi->is_writable)
+ return true;
+
+ /* chown the directory in any case, because kernel oopses are not foreign */
+ /* but their dump directories are not writable without chowning them or */
+ /* stealing them. The stealing is deprecated as it breaks the local */
+ /* duplicate search and root cannot see them */
+ const int res = chown_dir_over_dbus(problem_info_get_dir(pi));
+ if (pi->foreign && res != 0)
+ {
+ error_msg(_("Can't take ownership of '%s'"), problem_info_get_dir(pi));
+ return false;
+ }
+ pi->foreign = false;
+
+ struct dump_dir *dd = open_directory_for_writing(problem_info_get_dir(pi), /* don't ask */ NULL);
+ if (!dd)
+ {
+ error_msg(_("Can't open directory for writing '%s'"), problem_info_get_dir(pi));
+ return false;
+ }
+
+ problem_info_set_dir(pi, dd->dd_dirname);
+ pi->is_writable = true;
+ dd_close(dd);
+ return true;
+}
+
static problem_info_t *problem_info_new(const char *dir)
{
problem_info_t *pi = xzalloc(sizeof(*pi));
@@ -610,8 +641,13 @@ static pid_t spawn_event_handler_child(const char *dump_dir_name, const char *ev
return child;
}
-static void run_report_from_applet(const char *dirname)
+static void run_report_from_applet(problem_info_t *pi)
{
+ if (!problem_info_ensure_writable(pi))
+ return;
+
+ const char *dirname = problem_info_get_dir(pi);
+
fflush(NULL); /* paranoia */
pid_t pid = fork();
if (pid < 0)
@@ -649,7 +685,7 @@ static void action_report(NotifyNotification *notification, gchar *action, gpoin
{
if (strcmp(A_REPORT_REPORT, action) == 0)
{
- run_report_from_applet(problem_info_get_dir(pi));
+ run_report_from_applet(pi);
problem_info_free(pi);
}
else
@@ -1118,7 +1154,7 @@ static gboolean handle_event_output_cb(GIOChannel *gio, GIOCondition condition,
if (pi->known || !(state->flags & REPORT_UNKNOWN_PROBLEM_IMMEDIATELY))
notify_problem(pi);
else
- run_report_from_applet(problem_info_get_dir(pi));
+ run_report_from_applet(pi);
}
else
{
@@ -1179,29 +1215,11 @@ static void export_event_configuration(const char *event_name)
static void run_event_async(problem_info_t *pi, const char *event_name, int flags)
{
- /* chown the directory in any case, because kernel oopses are not foreign */
- /* but their dump directories are not writable without chowning them or */
- /* stealing them. The stealing is deprecated as it breaks the local */
- /* duplicate search and root cannot see them */
- const int res = chown_dir_over_dbus(problem_info_get_dir(pi));
- if (pi->foreign && res != 0)
+ if (!problem_info_ensure_writable(pi))
{
- error_msg(_("Can't take ownership of '%s'"), problem_info_get_dir(pi));
problem_info_free(pi);
return;
}
- pi->foreign = false;
-
- struct dump_dir *dd = open_directory_for_writing(problem_info_get_dir(pi), /* don't ask */ NULL);
- if (!dd)
- {
- error_msg(_("Can't open directory for writing '%s'"), problem_info_get_dir(pi));
- problem_info_free(pi);
- return;
- }
-
- problem_info_set_dir(pi, dd->dd_dirname);
- dd_close(dd);
export_event_configuration(event_name);
--
2.1.0

View 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

View file

@ -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

View file

@ -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

View file

@ -1,42 +0,0 @@
From 2fa193aba3cb1dd630faa65385a92e11d92806d1 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Tue, 26 Aug 2014 20:37:34 +0200
Subject: [PATCH] a-a-s-p-d: add firefox on the package blacklist
And drop the path to plugins-container from the path blacklist because:
- the path belongs to firefox package
- the path is invalid, the correct path is:
/usr/lib(64)/firefox/plugin-container
Resolves rhbz#1132018
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt-action-save-package-data.conf | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/daemon/abrt-action-save-package-data.conf b/src/daemon/abrt-action-save-package-data.conf
index 3d35bb6..cac3c7c 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
+BlackList = nspluginwrapper, valgrind, strace, mono-core, firefox
# Process crashes in executables which do not belong to any package?
#
@@ -15,7 +15,7 @@ ProcessUnpackaged = no
# Blacklisted executable paths (shell patterns)
#
-BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer, /usr/lib/xulrunner-*/plugin-container
+BlackListedPaths = /usr/share/doc/*, */example*, /usr/bin/nspluginviewer
# interpreters names
Interpreters = python2, python2.7, python, python3, python3.3, perl, perl5.16.2
--
2.1.0

View 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

View file

@ -1,212 +0,0 @@
From aa503cf6722fffa2dbf3d400a4e2bbeac2f78d65 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 23 Oct 2014 16:37:14 +0200
Subject: [PATCH] a-a-g-machine-id: add systemd's machine id
The dmidecode based algorithm may not work on all architectures.
man machine-id
Related to rhbz#1140044
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-generate-machine-id | 165 ++++++++++++++++++++++++++--
1 file changed, 153 insertions(+), 12 deletions(-)
diff --git a/src/plugins/abrt-action-generate-machine-id b/src/plugins/abrt-action-generate-machine-id
index 0aea787..b2de822 100644
--- a/src/plugins/abrt-action-generate-machine-id
+++ b/src/plugins/abrt-action-generate-machine-id
@@ -1,14 +1,47 @@
#!/usr/bin/python
+
+## Copyright (C) 2014 ABRT team <abrt-devel-list@redhat.com>
+## Copyright (C) 2014 Red Hat, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
+
+"""This module provides algorithms for generating Machine IDs.
+"""
+
+import sys
from argparse import ArgumentParser
+import logging
-import dmidecode
import hashlib
+def generate_machine_id_dmidecode():
+ """Generate a machine_id based off dmidecode fields
-# Generate a machine_id based off dmidecode fields
-def generate_machine_id():
- dmixml = dmidecode.dmidecodeXML()
+ The function generates the same result as sosreport-uploader
+
+ Returns a machine ID as string or throws RuntimeException
+
+ """
+ try:
+ import dmidecode
+ except ImportError as ex:
+ raise RuntimeError("Could not import dmidecode module: {0}"
+ .format(str(ex)))
+
+ dmixml = dmidecode.dmidecodeXML()
# Fetch all DMI data into a libxml2.xmlDoc object
dmixml.SetResultType(dmidecode.DMIXML_DOC)
xmldoc = dmixml.QuerySection('all')
@@ -38,20 +71,128 @@ def generate_machine_id():
return machine_id.hexdigest()
-if __name__ == "__main__":
- CMDARGS = ArgumentParser(description = "Generate a machine_id based off dmidecode fields")
- CMDARGS.add_argument('-o', '--output', type=str, help='Output file')
+def generate_machine_id_systemd():
+ """Generate a machine_id equals to a one generated by systemd
+
+ This function returns contents of /etc/machine-id
+
+ Returns a machine ID as string or throws RuntimeException.
+
+ """
+
+ try:
+ with open('/etc/machine-id', 'r') as midf:
+ return "".join((l.strip() for l in midf))
+ except IOError as ex:
+ raise RuntimeError("Could not use systemd's machine-id: {0}"
+ .format(str(ex)))
+
+
+GENERATORS = { 'sosreport_uploader-dmidecode' : generate_machine_id_dmidecode,
+ 'systemd' : generate_machine_id_systemd }
+
+
+def generate_machine_id(generators):
+ """Generates all requested machine id with all required generators
+
+ Keyword arguments:
+ generators -- a list of generator names
+
+ Returns a dictionary where keys are generators and associated values are
+ products of those generators.
+
+ """
+
+ ids = {}
+ workers = GENERATORS
+ for sd in generators:
+ try:
+ ids[sd] = workers[sd]()
+ except RuntimeError as ex:
+ logging.error("Machine-ID generator '{0}' failed: {1}"
+ .format(sd, ex.message))
+
+ return ids
+
+
+def print_result(ids, outfile, prefixed):
+ """Writes a dictionary of machine ids to a file
+
+ Each dictionary entry is written on a single line and the last line does
+ not have new line character. The new line character is omitted as it is a
+ common approach in ABRT.
+
+ Keyword arguments:
+ ids -- a dictionary [generator name: machine ids]
+ outfile -- output file
+ prefixed -- use 'generator name=' prefix or not
+ """
+
+ fmt = '{0}={1}' if prefixed else '{1}'
+
+ items_iter = ids.iteritems()
+ try:
+ sd, mid = items_iter.next()
+ outfile.write(fmt.format(sd, mid))
+ except StopIteration:
+ return
+
+ fmt = '\n' + fmt
+ for sd, mid in items_iter:
+ outfile.write(fmt.format(sd,mid))
+
+
+def print_generators(outfile=None):
+ """Prints requested generators
+
+ Keyword arguments:
+ outfile -- output file (default: sys.stdout)
+
+ """
+ if outfile is None:
+ outfile = sys.stdout
+
+ for sd in GENERATORS.iterkeys():
+ outfile.write("{0}\n".format(sd))
+
+
+if __name__ == '__main__':
+ CMDARGS = ArgumentParser(description = "Generate a machine_id")
+ CMDARGS.add_argument('-o', '--output', type=str,
+ help="Output file")
+ CMDARGS.add_argument('-g', '--generators', nargs='+', type=str,
+ help="Use given generators only")
+ CMDARGS.add_argument('-l', '--list-generators', action='store_true',
+ default=False, help="Print out a list of usable generators")
+ CMDARGS.add_argument('-n', '--noprefix', action='store_true',
+ default=False, help="Do not use generator name as prefix for IDs")
OPTIONS = CMDARGS.parse_args()
ARGS = vars(OPTIONS)
- machineid = generate_machine_id()
+ logging.basicConfig(format='%(message)s')
+
+ if ARGS['list_generators']:
+ print_generators()
+ sys.exit(0)
+
+ requested_generators = None
+ if ARGS['generators']:
+ requested_generators = ARGS['generators']
+ else:
+ requested_generators = GENERATORS.keys()
+
+ machineids = generate_machine_id(requested_generators)
if ARGS['output']:
try:
- with open(ARGS['output'], 'w') as outfile:
- outfile.write(machineid)
+ with open(ARGS['output'], 'w') as fout:
+ print_result(machineids, fout, not ARGS['noprefix'])
except IOError as ex:
- print ex
+ logging.error("Could not open output file: {0}".format(str(ex)))
+ sys.exit(1)
else:
- print machineid
+ print_result(machineids, sys.stdout, not ARGS['noprefix'])
+ sys.stdout.write('\n')
+
+ sys.exit(len(requested_generators) - len(machineids.keys()))
--
2.1.0

View file

@ -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

View file

@ -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

View file

@ -1,34 +0,0 @@
From 35e52c1820a84da2623a7cf4c71baf9fa6f2e12e Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 24 Oct 2014 15:50:02 +0200
Subject: [PATCH] a-a-g-machine-id: suppress its failures in abrt_event.conf
If an event script exits with a non-zero code, abrtd deletes entire dump
directory.
Failures of a-a-g-machine-id must not lead to the deletion of a dump
directory.
Related to rhbz#1140044
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index 4597627..3322a81 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -92,7 +92,7 @@ EVENT=post-create runlevel=
# Example: if you want to include *machineid* in dump directories:
#EVENT=post-create
- /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid
+ /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid || :
# Example:
# if you want to upload data immediately at the moment of a crash to
--
2.1.0

View 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

View file

@ -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

View file

@ -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

View file

@ -1,59 +0,0 @@
From 301fe7c65ba4431833ad8a9df7a4366eda889682 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:00:10 +0100
Subject: [PATCH] a-a-g-machine-id: omit trailing new-line for one-liners only
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/plugins/abrt-action-generate-machine-id | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/plugins/abrt-action-generate-machine-id b/src/plugins/abrt-action-generate-machine-id
index b2de822..6f43258 100644
--- a/src/plugins/abrt-action-generate-machine-id
+++ b/src/plugins/abrt-action-generate-machine-id
@@ -118,9 +118,9 @@ def generate_machine_id(generators):
def print_result(ids, outfile, prefixed):
"""Writes a dictionary of machine ids to a file
- Each dictionary entry is written on a single line and the last line does
- not have new line character. The new line character is omitted as it is a
- common approach in ABRT.
+ Each dictionary entry is written on a single line. The function does not
+ print trailing new-line if the dictionary contains only one item as it is
+ common format of one-liners placed in a dump directory.
Keyword arguments:
ids -- a dictionary [generator name: machine ids]
@@ -130,15 +130,10 @@ def print_result(ids, outfile, prefixed):
fmt = '{0}={1}' if prefixed else '{1}'
- items_iter = ids.iteritems()
- try:
- sd, mid = items_iter.next()
- outfile.write(fmt.format(sd, mid))
- except StopIteration:
- return
+ if len(ids) > 1:
+ fmt += '\n'
- fmt = '\n' + fmt
- for sd, mid in items_iter:
+ for sd, mid in ids.iteritems():
outfile.write(fmt.format(sd,mid))
@@ -193,6 +188,8 @@ if __name__ == '__main__':
sys.exit(1)
else:
print_result(machineids, sys.stdout, not ARGS['noprefix'])
- sys.stdout.write('\n')
+ # print_results() omits new-line for one-liners
+ if len(machineids) == 1:
+ sys.stdout.write('\n')
sys.exit(len(requested_generators) - len(machineids.keys()))
--
2.1.0

View 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

View file

@ -1,31 +0,0 @@
From 77fd4057c1364edc7a1815b73bb980229c8b9d65 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:01:07 +0100
Subject: [PATCH] a-a-g-machine-id: do not print any error from the event
handler
It is expected that dmidecode-less systems will print an error message
related to the fact that dmidecode doesn't work, hence forwarding of
STDOUT and STDERR to 'event_log' file.
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index 3322a81..feb02a3 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -92,7 +92,7 @@ EVENT=post-create runlevel=
# Example: if you want to include *machineid* in dump directories:
#EVENT=post-create
- /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid || :
+ /usr/libexec/abrt-action-generate-machine-id -o $DUMP_DIR/machineid >>event_log 2>&1 || :
# Example:
# if you want to upload data immediately at the moment of a crash to
--
2.1.0

View 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

View file

@ -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

View file

@ -1,34 +0,0 @@
From f5e65811d450c9117fa036bd82d161e5f936d5a0 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Fri, 31 Oct 2014 23:02:57 +0100
Subject: [PATCH] sos: use all valuable plugins
This commit mirrors the state of rhel7
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/daemon/abrt_event.conf | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/daemon/abrt_event.conf b/src/daemon/abrt_event.conf
index feb02a3..1153cc0 100644
--- a/src/daemon/abrt_event.conf
+++ b/src/daemon/abrt_event.conf
@@ -69,11 +69,13 @@ EVENT=post-create runlevel=
# if you would rather perform this collection later):
#EVENT=post-create
nice sosreport --tmp-dir "$DUMP_DIR" --batch \
- --only=anaconda --only=bootloader --only=devicemapper \
+ --only=anaconda --only=boot --only=devicemapper \
--only=filesys --only=hardware --only=kernel --only=libraries \
--only=memory --only=networking --only=nfsserver --only=pam \
--only=process --only=rpm -k rpm.rpmva=off --only=ssh \
--only=startup --only=yum --only=general --only=x11 \
+ --only=cups --only=logs --only=grub2 --only=cron --only=pci \
+ --only=auditd --only=selinux --only=lvm2 --only=sar \
>sosreport.log 2>&1 \
&& {
rm sosreport.log
--
2.1.0

View 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

View file

@ -1,58 +0,0 @@
From 1fc0e782d56af4df3f21560929176a09103923ad Mon Sep 17 00:00:00 2001
From: Martin Milata <mmilata@redhat.com>
Date: Tue, 4 Nov 2014 16:51:24 +0100
Subject: [PATCH] koops: improve 'reason' text for page faults
Current : 'general protection fault: 4000 [#1] SMP'
Improved: 'general protection fault in i915_gem_do_execbuffer'
Resolves rhbz#998887.
Signed-off-by: Martin Milata <mmilata@redhat.com>
---
src/plugins/oops-utils.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/plugins/oops-utils.c b/src/plugins/oops-utils.c
index 9e2355e..ea6c639 100644
--- a/src/plugins/oops-utils.c
+++ b/src/plugins/oops-utils.c
@@ -12,6 +12,8 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
+#include <satyr/stacktrace.h>
+
#include "oops-utils.h"
#include "libabrt.h"
@@ -242,8 +244,24 @@ void abrt_oops_save_data_in_dump_dir(struct dump_dir *dd, char *oops, const char
// TODO: add "Kernel oops: " prefix, so that all oopses have recognizable FILENAME_REASON?
// kernel oops 1st line may look quite puzzling otherwise...
- strchrnul(second_line, '\n')[0] = '\0';
- dd_save_text(dd, FILENAME_REASON, second_line);
+ char *reason_pretty = NULL;
+ char *error = NULL;
+ struct sr_stacktrace *trace = sr_stacktrace_parse(SR_REPORT_KERNELOOPS, second_line, &error);
+ if (trace)
+ {
+ reason_pretty = sr_stacktrace_get_reason(trace);
+ sr_stacktrace_free(trace);
+ }
+ else
+ free(error);
+
+ if (reason_pretty)
+ {
+ dd_save_text(dd, FILENAME_REASON, reason_pretty);
+ free(reason_pretty);
+ }
+ else
+ dd_save_text(dd, FILENAME_REASON, second_line);
}
int abrt_oops_signaled_sleep(int seconds)
--
2.1.0

View file

@ -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

View 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

View 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

View 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

File diff suppressed because it is too large Load diff

View 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

View file

@ -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

View 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

View 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

419
abrt.spec
View file

@ -21,6 +21,9 @@
%endif
%endif
# build abrt-atomic subpackage
%bcond_without atomic
%ifarch aarch64
%define have_kexec_tools 0
%else
@ -40,64 +43,75 @@
%define docdirversion -%{version}
%endif
%define libreport_ver 2.3.0-3
%define satyr_ver 0.15-2
%define libreport_ver 2.6.4-2
%define satyr_ver 0.19
Summary: Automatic bug detection and reporting tool
Name: abrt
Version: 2.3.0
Release: 5%{?dist}
Version: 2.6.1
Release: 11%{?dist}
License: GPLv2+
Group: Applications/System
URL: https://github.com/abrt/abrt/wiki/ABRT-Project
URL: https://abrt.readthedocs.org/
Source: https://fedorahosted.org/released/%{name}/%{name}-%{version}.tar.gz
# don't remove this patch, packages in rawhide are not signed!
Patch0: disable-OpenGPGCheck-in-Fedora-Rawhide.patch
#Patch0: disable-OpenGPGCheck-in-Fedora-Rawhide.patch
# git format-patch %%{Version} --topo-order -N -M;
# for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done
Patch0001: 0001-Translation-updates.patch
#Patch0002: 0002-testsuite-added-missing-test-for-abrt-cli-option-pro.patch
#Patch0003: 0003-testsuite-added-nachineid-test.patch
#Patch0004: 0004-testsuite-added-test-for-ureport-with-Authentication.patch
#Patch0005: 0005-testsuite-added-test-for-ureport-authorization-throu.patch
Patch0006: 0006-console-notifications-use-return-instead-of-exit.patch
Patch0007: 0007-ureport-attach-contact-email-if-configured.patch
Patch0008: 0008-applet-don-t-show-duphash-instead-of-component.patch
#Patch0009: 0009-testsuite-console-notifications.patch
Patch0010: 0010-console-notifications-skip-non-interactive-shells.patch
#Patch0011: 0011-testsuite-run-console-notification-tests-in-screen.patch
#Patch0012: 0012-testsuite-add-console-notification-on-the-rhel7-list.patch
#Patch0013: 0013-testsuite-install-abrt-console-notification.patch
#Patch0014: 0014-testsuite-added-test-for-integration-of-rhtsupport-w.patch
#Patch0015: 0015-testsuite-added-another-test-for-integration-of-rhts.patch
#Patch0016: 0016-testsuite-added-isolated-test-rhts-test-for-rhel6.patch
#Patch0017: 0017-testsuite-console-notifications-fix-couple-of-bugs.patch
#Patch0018: 0018-testsuite-dump-journal-oops-check-output.patch
#Patch0019: 0019-testsuite-fix-koops-journal-parsing-for-s390x.patch
#Patch0020: 0020-testsuite-show-diff-of-dumped-journal-oops-and-expec.patch
Patch0021: 0021-journal-oops-use-the-length-result-of-sd_journal_get.patch
#Patch0021: 0022-testsuite-abrt-action-ureport.patch
#Patch0022: 0023-testsuite-abrt-action-ureport.patch
Patch0023: 0024-make-ABRT-quieter.patch
#Patch0024: 0025-testsuite-rhts-test.patch
Patch0025: 0026-applet-ensure-writable-dump-directory-before-reporti.patch
#Patch0026: 0027-testsuite-rhsm-entitlement-aut-must-not-fail-with-mo.patch
#Patch0027: 0028-testsuite-use-the-entitlement-certs-with-rhsm.patch
#Patch0028: 0029-testsuite-do-not-user-uReport_URL-in-reporter-rhtsup.patch
Patch0029: 0030-a-a-s-p-d-add-firefox-on-the-package-blacklist.patch
#Patch0030: 0031-testsuite-infinite-recursion-stack-traces.patch
Patch0031: 0032-a-a-g-machine-id-add-systemd-s-machine-id.patch
#Patch0032: 0033-testsuite-add-sanity-test-for-a-a-g-machine-id.patch
Patch0033: 0034-a-a-g-machine-id-suppress-its-failures-in-abrt_event.patch
#Patch0034: 0035-testsuite-infinite-recursion-stack-traces-fix.patch
#Patch0035: 0036-testsuite-verify-that-machineid-contains-two-values.patch
Patch0036: 0037-a-a-g-machine-id-omit-trailing-new-line-for-one-line.patch
Patch0037: 0038-a-a-g-machine-id-do-not-print-any-error-from-the-eve.patch
Patch0038: 0039-sos-use-all-valuable-plugins.patch
Patch0039: 0040-koops-improve-reason-text-for-page-faults.patch
#Patch0040: 0041-testsuite-ureport-does-not-fail-on-rhsm-errors.patch
#Patch0041: 0042-spec-update-the-URL.patch
# i=1; for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done
Patch0001: 0001-cli-enable-authetication-for-all-commands.patch
Patch0002: 0002-cli-remove-useless-code-from-print_crash.patch
Patch0003: 0003-cli-use-internal-command-impl-in-the-command-process.patch
Patch0004: 0004-a-dump-oops-allow-update-the-problem-if-more-then-on.patch
Patch0005: 0005-abrtd-de-prioritize-post-create-event-scripts.patch
Patch0006: 0006-abrt-Fixup-component-of-select-kernel-backtraces.patch
Patch0007: 0007-ccpp-do-not-crash-if-generate_core_backtrace-fails.patch
Patch0008: 0008-applet-do-not-crash-if-the-new-problem-has-no-comman.patch
Patch0009: 0009-abrt-merge-pstoreoops-merge-files-in-descending-orde.patch
Patch0010: 0010-abrt-auto-reporting-fix-related-to-conditional-compi.patch
Patch0011: 0011-doc-fix-related-to-conditional-compilation-of-man-pa.patch
Patch0012: 0012-dbus-api-unify-reporting-of-errors.patch
Patch0013: 0013-cli-fix-testing-of-DBus-API-return-codes.patch
Patch0014: 0014-ccpp-fix-comment-related-to-MakeCompatCore-option-in.patch
Patch0015: 0015-ccpp-use-global-TID.patch
Patch0016: 0016-a-a-s-p-d-add-bash-on-the-package-blacklist.patch
Patch0017: 0017-cli-don-t-start-reporting-of-not-reportable-problems.patch
Patch0018: 0018-introduce-bodhi2-to-abrt-bodhi.patch
#Patch0019: 0019-spec-add-hawkey-to-BRs-of-abrt-bodhi.patch
Patch0020: 0020-ccpp-do-not-break-the-reporting-if-a-bodhi-fails.patch
Patch0021: 0021-bodhi-add-ignoring-of-Rawhide.patch
Patch0022: 0022-bodhi-add-parsing-of-error-responses.patch
Patch0023: 0023-doc-actualize-the-abrt-bodhi-man-page.patch
Patch0024: 0024-bodhi-fix-a-segfault-when-testing-an-os-release-opt-.patch
Patch0025: 0025-bodhi-fix-typo-in-error-messages.patch
Patch0026: 0026-abrt-dump-xorg-support-Xorg-log-backtraces-prefixed-.patch
Patch0027: 0027-a-a-a-ccpp-local-don-t-delete-build_ids.patch
Patch0028: 0028-abrt-retrace-client-use-atoll-for-_size-conversion.patch
Patch0029: 0029-doc-fix-default-DumpLocation-in-abrt.conf-man-page.patch
Patch0030: 0030-dbus-ensure-expected-bytes-width-of-DBus-numbers.patch
#Patch0031: 0031-spec-add-missing-man-page-for-abrt-dump-journal-core.patch
Patch0032: 0032-doc-add-missing-man-page-for-abrt-dump-journal-core.patch
Patch0033: 0033-a-d-journal-core-set-root-owner-for-created-dump-dir.patch
Patch0034: 0034-doc-a-a-analyze-xorg-fix-path-to-conf-file.patch
Patch0035: 0035-a-a-s-p-data-fix-segfault-if-GPGKeysDir-isn-t-config.patch
Patch0036: 0036-ccpp-make-crashes-of-processes-with-locked-memory-no.patch
Patch0037: 0037-a-a-i-d-to-abrt-cache-make-own-random-temporary-dire.patch
Patch0038: 0038-conf-introduce-DebugLevel.patch
Patch0039: 0039-ccpp-ignore-crashes-of-ABRT-binaries-if-DebugLevel-0.patch
Patch0040: 0040-ccpp-save-abrt-core-files-only-to-new-files.patch
Patch0041: 0041-lib-add-convenient-wrappers-for-ensuring-writable-di.patch
Patch0042: 0042-abrtd-switch-owner-of-the-dump-location-to-root.patch
#Patch0043: 0043-spec-switch-owner-of-the-dump-location-to-root.patch
Patch0044: 0044-a-a-save-package-data-do-not-blacklist-firefox.patch
Patch0045: 0045-ccpp-drop-e-from-the-core_pattern.patch
#Patch0046: 0046-testsuite-ccpp-executable-with-white-space-in-name.patch
#Patch0047: 0047-translations-update-zanata-configuration.patch
Patch0048: 0048-Translation-updates.patch
Patch0049: 0049-translations-add-missing-new-line.patch
Patch0050: 0050-a-a-save-package-data-blacklist-usr-lib-64-firefox-p.patch
#Patch0051: 0051-testsuite-add-concurrent-processing-test-for-abrtd.patch
Patch0052: 0052-a-a-install-debuginfo-make-tmpdir-variable-global.patch
Patch0053: 0053-a-a-install-debuginfo-fix-BrokenPipe-error.patch
# '%%autosetup -S git' -> git
@ -105,6 +119,7 @@ BuildRequires: git
BuildRequires: dbus-devel
BuildRequires: gtk3-devel
BuildRequires: glib2-devel >= 2.43
BuildRequires: rpm-devel >= 4.6
BuildRequires: desktop-file-utils
BuildRequires: libnotify-devel
@ -124,6 +139,7 @@ BuildRequires: satyr-devel >= %{satyr_ver}
BuildRequires: systemd-python
BuildRequires: systemd-python3
BuildRequires: augeas
BuildRequires: libselinux-devel
Requires: libreport >= %{libreport_ver}
Requires: satyr >= %{satyr_ver}
@ -180,9 +196,9 @@ Group: User Interface/Desktops
Requires: %{name} = %{version}-%{release}
Requires: %{name}-dbus = %{version}-%{release}
Requires: gnome-abrt
Requires: gsettings-desktop-schemas >= 3.15
BuildRequires: libreport-gtk-devel >= %{libreport_ver}
BuildRequires: libICE-devel
BuildRequires: libSM-devel
BuildRequires: gsettings-desktop-schemas-devel >= 3.15
# we used to have abrt-applet, now abrt-gui includes it:
Provides: abrt-applet = %{version}-%{release}
Obsoletes: abrt-applet < 0.0.5
@ -193,11 +209,23 @@ Requires: abrt-gui-libs = %{version}-%{release}
%description gui
GTK+ wizard for convenient bug reporting.
%package addon-coredump-helper
Summary: %{name}'s /proc/sys/kernel/core_pattern helper
Group: System Environment/Libraries
Requires: abrt-libs = %{version}-%{release}
%description addon-coredump-helper
This package contains hook for C/C++ crashed programs.
%package addon-ccpp
Summary: %{name}'s C/C++ addon
Group: System Environment/Libraries
Requires: cpio
Requires: gdb >= 7.0-3
%if 0%{?fedora:%{fedora} > 22}
Requires: gdb >= gdb-7.9.50.20150531
%else
Requires: gdb >= 7.9.1-16
%endif
Requires: elfutils
%if 0%{!?rhel:1}
# abrt-action-perform-ccpp-analysis wants to run analyze_RetraceServer:
@ -205,11 +233,11 @@ Requires: %{name}-retrace-client
%endif
Requires: %{name} = %{version}-%{release}
Requires: abrt-libs = %{version}-%{release}
Requires: %{name}-addon-coredump-helper = %{version}-%{release}
Requires: libreport-python
%description addon-ccpp
This package contains hook for C/C++ crashed programs and %{name}'s C/C++
analyzer plugin.
This package contains %{name}'s C/C++ analyzer plugin.
%package addon-upload-watch
Summary: %{name}'s upload addon
@ -289,6 +317,7 @@ BuildRequires: json-c-devel
Group: System Environment/Libraries
Requires: %{name} = %{version}-%{release}
BuildRequires: libreport-web-devel >= %{libreport_ver}
BuildRequires: hawkey-devel
Obsoletes: libreport-plugin-bodhi > 0.0.1
Provides: libreport-plugin-bodhi
@ -380,7 +409,7 @@ Requires: abrt-addon-python
Requires: abrt-addon-python3
Requires: abrt-addon-xorg
# Default config of addon-ccpp requires gdb
Requires: gdb >= 7.0-3
Requires: gdb >= 7.8.1-31
Requires: elfutils
Requires: abrt-gui
Requires: gnome-abrt
@ -402,6 +431,18 @@ Provides: bug-buddy = 2.28.0
Virtual package to install all necessary packages for usage from desktop
environment.
%if %{with atomic}
%package atomic
Summary: Package to make easy default installation on Atomic hosts
Group: Applications/System
Requires: %{name}-addon-coredump-helper = %{version}-%{release}
Conflicts: %{name}-addon-ccpp
%endif
%description atomic
Package to install all necessary packages for usage from Atomic
hosts.
%package dbus
Summary: ABRT DBus service
Group: Applications/System
@ -419,11 +460,12 @@ Summary: ABRT Python API
Group: System Environment/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: pygobject2
Requires: %{name}-dbus = %{version}-%{release}
Requires: dbus-python
Requires: libreport-python
BuildRequires: python-nose
BuildRequires: python-sphinx
BuildRequires: libreport-python
%description python
High-level API for querying, creating and manipulating
@ -445,7 +487,7 @@ Summary: ABRT Python 3 API
Group: System Environment/Libraries
Requires: %{name} = %{version}-%{release}
Requires: %{name}-libs = %{version}-%{release}
Requires: pygobject3
Requires: %{name}-dbus = %{version}-%{release}
Requires: python3-dbus
Requires: libreport-python3
BuildRequires: python3-nose
@ -482,8 +524,8 @@ to the shell
# Default '__scm_apply_git' is 'git apply && git commit' but this workflow
# doesn't allow us to create a new file within a patch, so we have to use
# 'git am' (see /usr/lib/rpm/macros for more details)
%define __scm_apply_git(qp:m:) %{__git} am
#%%define __scm_apply_git(qp:m:) %%{__git} am --exclude libreport.spec.in --exclude .gitignore
#%%define __scm_apply_git(qp:m:) %%{__git} am
%define __scm_apply_git(qp:m:) %{__git} am --exclude doc/design --exclude doc/project/abrt.tex --exclude .gitignore --exclude abrt.spec.in
%autosetup -S git
%build
@ -493,9 +535,13 @@ CFLAGS="%{optflags} -Werror" %configure --enable-doxygen-docs \
%ifnarch arm armhfp armv7hl armv7l aarch64
--enable-native-unwinder \
%endif
%if %{without atomic}
--without-atomic \
%endif
%if %{?have_kexec_tools} == 0
--disable-addon-vmcore \
%endif
--enable-dump-time-unwind \
--disable-silent-rules
make %{?_smp_mflags}
@ -520,7 +566,7 @@ find $RPM_BUILD_ROOT -name '*.la' -or -name '*.a' | xargs rm -f
mkdir -p ${RPM_BUILD_ROOT}/%{_initrddir}
mkdir -p $RPM_BUILD_ROOT/var/cache/abrt-di
mkdir -p $RPM_BUILD_ROOT/var/run/abrt
mkdir -p $RPM_BUILD_ROOT/var/tmp/abrt
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt
mkdir -p $RPM_BUILD_ROOT/var/spool/abrt-upload
mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/lib/abrt
@ -556,6 +602,7 @@ exit 0
# so 2.x fails when it tries to extract debuginfo there..
chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%systemd_post abrt-ccpp.service
%systemd_post abrt-journal-core.service
%post addon-kerneloops
%systemd_post abrt-oops.service
@ -579,6 +626,7 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%preun addon-ccpp
%systemd_preun abrt-ccpp.service
%systemd_preun abrt-journal-core.service
%preun addon-kerneloops
%systemd_preun abrt-oops.service
@ -602,6 +650,7 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
%postun addon-ccpp
%systemd_postun_with_restart abrt-ccpp.service
%systemd_postun_with_restart abrt-journal-core.service
%postun addon-kerneloops
%systemd_postun_with_restart abrt-oops.service
@ -624,6 +673,36 @@ chown -R abrt:abrt %{_localstatedir}/cache/abrt-di
# update icon cache
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
%if %{with atomic}
%post atomic
if [ -f /etc/abrt/plugins/CCpp.conf ]; then
mv /etc/abrt/plugins/CCpp.conf /etc/abrt/plugins/CCpp.conf.rpmsave.atomic || exit 1;
fi
ln -sf /etc/abrt/plugins/CCpp_Atomic.conf /etc/abrt/plugins/CCpp.conf
if [ -f /usr/share/abrt/conf.d/plugins/CCpp.conf ]; then
mv /usr/share/abrt/conf.d/plugins/CCpp.conf /usr/share/abrt/conf.d/plugins/CCpp.conf.rpmsave.atomic || exit 1;
fi
ln -sf /usr/share/abrt/conf.d/plugins/CCpp_Atomic.conf /usr/share/abrt/conf.d/plugins/CCpp.conf
%systemd_post abrt-coredump-helper.service
%preun atomic
if [ -L /etc/abrt/plugins/CCpp.conf ]; then
rm /etc/abrt/plugins/CCpp.conf
fi
if [ -L /usr/share/abrt/conf.d/plugins/CCpp.conf ]; then
rm /usr/share/abrt/conf.d/plugins/CCpp.conf
fi
if [ -f /etc/abrt/plugins/CCpp.conf.rpmsave.atomic ]; then
mv /etc/abrt/plugins/CCpp.conf.rpmsave.atomic /etc/abrt/plugins/CCpp.conf || exit 1
fi
if [ -f /usr/share/abrt/conf.d/plugins/CCpp.conf.rpmsave.atomic ]; then
mv /usr/share/abrt/conf.d/plugins/CCpp.conf.rpmsave.atomic /usr/share/abrt/conf.d/plugins/CCpp.conf || exit 1
fi
%postun atomic
%systemd_postun_with_restart abrt-coredump-helper.service
%endif
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
@ -639,23 +718,10 @@ if [ $1 -eq 0 ] ; then
fi
%posttrans
# update the old problem dirs to contain "type" element
abrtdir=$(grep "DumpLocation" /etc/abrt/abrt.conf | cut -d'=' -f2 | tr -d ' '); cd $abrtdir 2>/dev/null && for i in `find . -name "analyzer" 2>/dev/null`; do len=${#i};cp "$i" "${i:0:$len-9}/type"; done; for i in `find "$abrtdir" -mindepth 1 -maxdepth 1 -type d`; do chown `stat --format=%U:abrt $i` $i/*; done
service abrtd condrestart >/dev/null 2>&1 || :
%posttrans addon-ccpp
service abrt-ccpp condrestart >/dev/null 2>&1 || :
# Regenerate core_bactraces because of missing crash threads
abrtdir=$(grep "DumpLocation" /etc/abrt/abrt.conf | cut -d'=' -f2 | tr -d ' ')
if test -d "$abrtdir"; then
for DD in `find "$abrtdir" -mindepth 1 -maxdepth 1 -type d`
do
if test -f "$DD/analyzer" && grep -q "^CCpp$" "$DD/analyzer"; then
/usr/bin/abrt-action-generate-core-backtrace -d "$DD" -- >/dev/null 2>&1 || :
test -f "$DD/core_backtrace" && chown `stat --format=%U:abrt $DD` "$DD/core_backtrace" || :
fi
done
fi
%posttrans addon-kerneloops
service abrt-oops condrestart >/dev/null 2>&1 || :
@ -682,6 +748,11 @@ service abrt-upload-watch condrestart >/dev/null 2>&1 || :
%posttrans gui
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%posttrans dbus
# Force abrt-dbus to restart like we do with the other services
killall abrt-dbus >/dev/null 2>&1 || :
%files -f %{name}.lang
%defattr(-,root,root,-)
%doc README COPYING
@ -701,11 +772,11 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/abrt-action-notify
%{_mandir}/man1/abrt-action-notify.1.gz
%{_bindir}/abrt-action-save-package-data
%{_bindir}/abrt-action-save-container-data
%{_bindir}/abrt-watch-log
%{_bindir}/abrt-action-analyze-python
%{_bindir}/abrt-action-analyze-xorg
%config(noreplace) %{_sysconfdir}/%{name}/abrt.conf
%{_datadir}/%{name}/conf.d/abrt.conf
%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.problems.daemon.conf
%config(noreplace) %{_sysconfdir}/%{name}/abrt-action-save-package-data.conf
%{_datadir}/%{name}/conf.d/abrt-action-save-package-data.conf
%config(noreplace) %{_sysconfdir}/%{name}/plugins/xorg.conf
@ -718,18 +789,13 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man5/abrt_event.conf.5.gz
%config(noreplace) %{_sysconfdir}/libreport/events.d/smart_event.conf
%{_mandir}/man5/smart_event.conf.5.gz
%dir %attr(0755, abrt, abrt) %{_localstatedir}/tmp/%{name}
%dir %attr(0751, root, abrt) %{_localstatedir}/spool/%{name}
%dir %attr(0700, abrt, abrt) %{_localstatedir}/spool/%{name}-upload
# abrtd runs as root
%dir %attr(0755, root, root) %{_localstatedir}/run/%{name}
%ghost %attr(0666, -, -) %{_localstatedir}/run/%{name}/abrt.socket
%ghost %attr(0644, -, -) %{_localstatedir}/run/%{name}/abrtd.pid
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/plugins
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/conf.d
%dir %{_datadir}/%{name}/conf.d/plugins
%{_mandir}/man1/abrt-handle-upload.1.gz
%{_mandir}/man1/abrt-server.1.gz
%{_mandir}/man1/abrt-action-save-package-data.1.gz
@ -738,16 +804,23 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man1/abrt-action-analyze-xorg.1.gz
%{_mandir}/man1/abrt-auto-reporting.1.gz
%{_mandir}/man8/abrtd.8.gz
%{_mandir}/man5/abrt.conf.5.gz
%{_mandir}/man5/abrt-action-save-package-data.conf.5.gz
# {_mandir}/man5/pyhook.conf.5.gz
# filesystem package should own /usr/share/augeas/lenses directory
%{_datadir}/augeas/lenses/abrt.aug
%files libs
%defattr(-,root,root,-)
%{_libdir}/libabrt.so.*
%config(noreplace) %{_sysconfdir}/%{name}/abrt.conf
%{_datadir}/%{name}/conf.d/abrt.conf
%{_mandir}/man5/abrt.conf.5.gz
%dir %{_sysconfdir}/%{name}
%dir %{_sysconfdir}/%{name}/plugins
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/conf.d
%dir %{_datadir}/%{name}/conf.d/plugins
# filesystem package should own /usr/share/augeas/lenses directory
%{_datadir}/augeas/lenses/abrt.aug
%files devel
%defattr(-,root,root,-)
@ -787,19 +860,25 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man1/abrt-applet.1*
%{_mandir}/man1/system-config-abrt.1*
%files addon-coredump-helper
%defattr(-,root,root,-)
%{_libexecdir}/abrt-hook-ccpp
%{_sbindir}/abrt-install-ccpp-hook
%{_mandir}/man*/abrt-install-ccpp-hook.*
%files addon-ccpp
%defattr(-,root,root,-)
%dir %attr(0775, abrt, abrt) %{_localstatedir}/cache/abrt-di
%config(noreplace) %{_sysconfdir}/%{name}/plugins/CCpp.conf
%{_datadir}/%{name}/conf.d/plugins/CCpp.conf
%{_mandir}/man5/abrt-CCpp.conf.5.gz
%dir %attr(0775, abrt, abrt) %{_localstatedir}/cache/abrt-di
%{_libexecdir}/abrt-gdb-exploitable
%if %{with systemd}
%{_unitdir}/abrt-ccpp.service
%{_unitdir}/abrt-journal-core.service
%else
%{_initrddir}/abrt-ccpp
%endif
%{_libexecdir}/abrt-hook-ccpp
%{_libexecdir}/abrt-gdb-exploitable
# attr(6755) ~= SETUID|SETGID
%attr(6755, abrt, abrt) %{_libexecdir}/abrt-action-install-debuginfo-to-abrt-cache
@ -815,7 +894,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_bindir}/abrt-action-list-dsos
%{_bindir}/abrt-action-perform-ccpp-analysis
%{_bindir}/abrt-action-analyze-ccpp-local
%{_sbindir}/abrt-install-ccpp-hook
%{_bindir}/abrt-dump-journal-core
%config(noreplace) %{_sysconfdir}/libreport/events.d/ccpp_event.conf
%{_mandir}/man5/ccpp_event.conf.5.gz
%config(noreplace) %{_sysconfdir}/libreport/events.d/gconf_event.conf
@ -835,12 +914,12 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man*/abrt-action-generate-core-backtrace.*
%{_mandir}/man*/abrt-action-analyze-backtrace.*
%{_mandir}/man*/abrt-action-list-dsos.*
%{_mandir}/man*/abrt-install-ccpp-hook.*
%{_mandir}/man*/abrt-action-install-debuginfo.*
%{_mandir}/man*/abrt-action-analyze-ccpp-local.*
%{_mandir}/man*/abrt-action-analyze-core.*
%{_mandir}/man*/abrt-action-analyze-vulnerability.*
%{_mandir}/man*/abrt-action-perform-ccpp-analysis.*
%{_mandir}/man*/abrt-dump-journal-core.*
%files addon-upload-watch
%defattr(-,root,root,-)
@ -912,6 +991,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_sbindir}/abrt-harvest-vmcore
%{_bindir}/abrt-action-analyze-vmcore
%{_bindir}/abrt-action-check-oops-for-hw-error
%{_bindir}/abrt-action-check-oops-for-alt-component
%{_mandir}/man1/abrt-harvest-vmcore.1*
%{_mandir}/man5/abrt-vmcore.conf.5*
%{_mandir}/man1/abrt-action-analyze-vmcore.1*
@ -962,6 +1042,18 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%files desktop
%defattr(-,root,root,-)
%if %{with atomic}
%files atomic
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/plugins/CCpp_Atomic.conf
%{_unitdir}/abrt-coredump-helper.service
%{_datadir}/%{name}/conf.d/plugins/CCpp_Atomic.conf
%config(noreplace) %{_sysconfdir}/%{name}/abrt-action-save-package-data.conf
%{_bindir}/abrt-action-save-package-data
%{_mandir}/man1/abrt-action-save-package-data.1.gz
%{_mandir}/man5/abrt-action-save-package-data.conf.5.gz
%endif
%files plugin-bodhi
%defattr(-,root,root,-)
%{_bindir}/abrt-bodhi
@ -1010,6 +1102,153 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
%changelog
* Tue Apr 12 2016 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-11
- a-a-install-debuginfo: fix BrokenPipe error
* Tue Feb 23 2016 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-10
- translation updates
- blacklist Firefox's plugin-container
* Wed Feb 10 2016 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-9
- drop %e from the core_pattern
* Wed Feb 03 2016 Matej Habrnal <mhabrnal@redhat.com> - 2.6.1-8
- a-a-save-package-data: do not blacklist firefox
* Wed Nov 25 2015 Jakub Filak <jfilak@redhat.com> - 2.6.1-7
- CVE-2015-5287: switch owner of /var/spool/abrt to 'root'
- CVE-2015-5287: ccpp: save abrt core files only if DebugLevel > 0
- CVE-2015-5287: ccpp: save abrt core files only to new files
- CVE-2015-5287: abrt configuration: introduce DebugLevel
- CVE-2015-5273: a-a-i-d-to-abrt-cache: make own random temporary directory
- ccpp: make crashes of processes with locked memory not-reportable
- a-d-journal-core: set root owner for created dump directory
- spec: add missing man page for abrt-dump-journal-core
- Resolves: #1262252, #1284557
* Fri Oct 16 2015 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-6
- doc: fix default DumpLocation in abrt.conf man page
- abrt-retrace-client: use atoll for _size conversion
- a-a-a-ccpp-local don't delete build_ids
- abrt-dump-xorg: support Xorg log backtraces prefixed by (EE
- bodhi: fix typo in error messages
* Thu Sep 17 2015 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-5
- doc: actualize the abrt-bodhi man page
- bodhi: fix a segfault when testing an os-release opt for 'rawhide'
* Thu Aug 27 2015 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-4
- bodhi: add parsing of error responses
- bodhi: add ignoring of Rawhide
- do not break the reporting if a-bodhi fails
- spec: add hawkey to BRs of abrt-bodhi
- introduce bodhi2 to abrt-bodhi
- don't start reporting of not-reportable problems
- add bash on the package blacklist
* Fri Aug 14 2015 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-3
- ccpp: use global TID
- fix comment related to 'MakeCompatCore' option in CCpp.conf
- fix testing of DBus API return codes
- dbus-api: unify reporting of errors
- fix related to conditional compilation of man page
- abrt-auto-reporting: fix related to conditional compilation
- abrt-merge-pstoreoops: merge files in descending order
* Tue Jul 21 2015 Jakub Filak <jfilak@redhat.com> 2.6.1-2
- applet: do not crash if the new problem has no command_line
- ccpp: do not crash if generate_core_backtrace fails
- abrt: Fixup component of select kernel backtraces
- abrtd: de-prioritize post-create event scripts
- a-dump-oops: allow update the problem, if more then one oops found
- cli: enable authetication for all commands
- Resolves: #1236422, #1243791
* Fri Jul 03 2015 Matej Habrnal <mhabrnal@redhat.com> 2.6.1-1
- keep the polkit authorization for all clients
- enable polkit authentication on command line
- use TID to find crash thread
- remove PyGObject from all Requires
- update version of gdb because of -ascending
- make it easier to find the backtrace of th crash thread
- save TID in the file 'tid'
- get TID from correct cmd line argument
- add option always generate backtrace locally
- add processor information to sosreport
- update abrt-cli man page
- Resolves: #1240516
* Tue Jun 09 2015 Jakub Filak <jfilak@redhat.com> 2.6.0-1
- move the default dump location to /var/spool/abrt from /var/tmp/abrt
- hooks: use root for owner of all dump directories
- ccpp: do not unlink failed and big user cores
- ccpp: don't save the system logs by default
- ccpp: stop reading hs_error.log from /tmp
- ccpp: emulate selinux for creation of compat cores
- koops: don't save dmesg if kernel.dmesg_restrict=1
- dbus: validate passed arguments
- turn off exploring crashed process's root directories
- abrt-python: bug fixes and improvements
- fixes for CVE-2015-3315, CVE-2015-3142, CVE-2015-1869, CVE-2015-1870
- fixes for CVE-2015-3147, CVE-2015-3151, CVE-2015-3150, CVE-2015-3159
- spec: add abrt-dbus to Rs of abrt-python and abrt-cli
- spec: restart abrt-dbus in posttrans
* Wed May 20 2015 Matej Habrnal <mhabrnal@redhat.com> 2.5.1-3
- applet: fix problem info double free
- upload: validate and sanitize uploaded dump directories
- applet: switch to D-Bus methods
- lib: add new kernel taint flags
- abrt-auto-reporting: require rhtsupport.conf file only on RHEL
- doc, polkit: Spelling/grammar fixes
- applet: migrate Autoreporting options to GSettings
- config UI: read glade from a local file first
- config UI: Automatic reporting from GSettings
- Resolves: #1211644
* Mon Apr 13 2015 Jakub Filak <jfilak@redhat.com> 2.5.1-2
- Remove no longer needed posttrans scriptlet copying analyzer to type
* Thu Apr 09 2015 Jakub Filak <jfilak@redhat.com> 2.5.1-1
- Translation updates
- problem: use 'type' element instead of 'analyzer'
- cli-status: don't return 0 if there is a problem older than limit
- cli: use the DBus methods for getting problem information
- journal-oops: add an argument accepting journal directory
- lib: don't expect kernel's version '2.6.*' or '3.*.*'
- dbus: add new method to test existence of an element
- vmcore: generate 'reason' file in all cases
- applet: Don't show report button for unpackaged programs
- applet: get the list of problems through D-Bus service
- Resolves: #1205439
* Fri Mar 20 2015 Jakub Filak <jfilak@redhat.com> 2.5.0-2
- applet: re-enable notifications of problems not-yet seen problems at start-up
* Wed Mar 18 2015 Jakub Filak <jfilak@redhat.com> 2.5.0-1
- dbus: add a new method GetProblemData
- abrt_event: run save package data event even if component exists
- a-a-s-container-data: add a new argument --root
- a-a-s-kernel-data: add --root argument
- journal-oops: add an argument similar to '--merge'
- ccpp: create the dump location from standalone hook
- retrace-client: stop failing on SSL2
- spec: changes for Atomic hosts
- ccpp: add support for multiple pkg mngrs
- Python 3 compatibility
- Don't allow users to list problems "by hand"
- spec: abrt-python requires libreport-python to build
- Resolves: #1200852
* Fri Feb 20 2015 Jakub Filak <jfilak@redhat.com> - 2.4.0-1
- gracefully handle crashes in containers
- reworked abrt-applet's work-flow
- process unpackaged by default
- support collecting coredumps from systemd-coredumpctl
- search for log lines in journald more efficiently
- support sending micro-reports without the need to save coredump
- create a new package abrt-coredump-helper for Fedora Atomic
* Fri Nov 07 2014 Jakub Filak <jfilak@redhat.com> - 2.3.0-5
- koops: improve 'reason' text for page faults
- do not detect Firefox crashes

View file

@ -1 +1 @@
faa666301f4512723486300212cd7e58 abrt-2.3.0.tar.gz
936fa2b51d58d5c00729b8512ffa2a68 abrt-2.6.1.tar.gz