Compare commits

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

4 commits

Author SHA1 Message Date
Julius Milan
ce22458aef Fixes and improvements
- logging: rename log() to log_warning()
- reporter-mantisbt: Fix typo in help
- bugzilla: add check if option -d was entered
- dd: extend create_dump_dir to allow set pid in dumpdir name
- lib: fix to ensure order of login credentials when reporting using abrt-cli
- configure.ac: update glib min. version dependency
- lib: fix newline issue with ask_password
2017-08-31 16:56:57 +02:00
Petr Šabata
ea83325b23 Weaken the python3 bindings base package dependency for modular builds
Different parts of libreports are built and shipped with
different modules in F26 Boltron, namely modules/shared-userspace
and modules/dnf.  This allows libreport-python3 from modules/dnf
work with libreport from modules/shared-userspace even though
they have different dist tags.

This only affects modularity builds and shouldn't be needed
beyond F26 Boltron.

Signed-off-by: Petr Šabata <contyk@redhat.com>
2017-06-12 17:01:41 +02:00
Matej Habrnal
b730895e1c Fixes and improvements
- augeas: trim spaces on eol, around value separator
- add journal default entries to reporter-systemd-journal

Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2017-04-13 14:35:41 +02:00
Matej Habrnal
221ea17013 New upstream release 2.9.1
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
2017-03-16 11:20:09 +01:00
13 changed files with 2540 additions and 6 deletions

View file

@ -0,0 +1,100 @@
From bc3149ba31c063d334dd95a21c4214cef11f46da Mon Sep 17 00:00:00 2001
From: Julius Milan <jmilan@redhat.com>
Date: Wed, 22 Mar 2017 14:10:04 +0100
Subject: [PATCH] augeas: trim spaces on eol, around value separator
Resolves abrt/libreport#474
Related to rhbz#1434414
---
augeas/libreport.aug | 19 ++++++++++++-------
augeas/test_libreport.aug | 20 ++++++++++++++++++++
2 files changed, 32 insertions(+), 7 deletions(-)
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
index 483eeaf..46ffb73 100644
--- a/augeas/libreport.aug
+++ b/augeas/libreport.aug
@@ -2,19 +2,24 @@ module Libreport =
autoload xfm
(* Define useful primitives *)
- let value_sep = del / ?= ?/ " = "
- let value_to_eol = store /([^ \t\n].*[^ \t\n]|[^ \t\n]?)/
- let eol = del /\n/ "\n"
- let ident = /[a-zA-Z][a-zA-Z_]+/
+ let val_sep = del /[ \t]*=[ \t]*/ " = "
+ let val = store /([^ \t\n].*[^ \t\n]|[^ \t\n])/
+ let eol = del /\n/ "\n"
+ let whitespace_eol = del /[ \t]*\n/ "\n"
+ let ident = /[a-zA-Z][a-zA-Z_]+/
(* Define comment *)
- let comment = [ label "#comment" . del /#[ \t]*/ "# " . value_to_eol . eol ]
+ let commented_line = [ label "#comment" . del /#[ \t]*/ "# " . val . eol ]
+ let empty_comment = [ label "#comment" . value "" . del /#[ \t]*/ "# " . eol ]
+ let comment = commented_line | empty_comment
(* Define empty *)
- let empty = [ del /[ \t]*\n/ "\n" ]
+ let empty = [ del /[ \t]*\n/ "\n" ]
(* Define option *)
- let option = [ del /[ \t]*/ "" . key ident . value_sep . value_to_eol . eol ]
+ let option_val = [ del /[ \t]*/ "" . key ident . val_sep . val . whitespace_eol ]
+ let option_no_val = [ value "" . del /[ \t]*/ "" . key ident . val_sep . eol ]
+ let option = option_val | option_no_val
(* Define lens *)
let lns = ( comment | empty | option )*
diff --git a/augeas/test_libreport.aug b/augeas/test_libreport.aug
index 116e97c..3dfbfa6 100644
--- a/augeas/test_libreport.aug
+++ b/augeas/test_libreport.aug
@@ -16,6 +16,8 @@ Password =
# bugs in selinux-policy component.
# (If you need to add more, the syntax is: \"component[,component...]\")
#
+#
+#
DontMatchComponents = selinux-policy
# for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets
@@ -25,6 +27,14 @@ PrivateGroups=private
Whitespace_two=start
Whitespace_three =start
Whitespace_four= start
+
+AssignmentWhitespace_a =what
+ AssignmentWhitespace_b = an
+AssignmentWhitespace_c= original
+ AssignmentWhitespace_d = idea
+
+EOLWhitespace_a = nice
+EOLWhitespace_b = nice
"
test Libreport.lns get conf =
@@ -44,6 +54,8 @@ PrivateGroups=private
{ "#comment" = "bugs in selinux-policy component." }
{ "#comment" = "(If you need to add more, the syntax is: \"component[,component...]\")" }
{ "#comment" = "" }
+ { "#comment" = "" }
+ { "#comment" = "" }
{ "DontMatchComponents" = "selinux-policy" }
{}
{ "#comment" = "for more info about these settings see: https://github.com/abrt/abrt/wiki/FAQ#creating-private-bugzilla-tickets" }
@@ -53,3 +65,11 @@ PrivateGroups=private
{ "Whitespace_two" = "start" }
{ "Whitespace_three" = "start" }
{ "Whitespace_four" = "start" }
+ {}
+ { "AssignmentWhitespace_a" = "what" }
+ { "AssignmentWhitespace_b" = "an" }
+ { "AssignmentWhitespace_c" = "original" }
+ { "AssignmentWhitespace_d" = "idea" }
+ {}
+ { "EOLWhitespace_a" = "nice" }
+ { "EOLWhitespace_b" = "nice" }
--
2.9.3

View file

@ -0,0 +1,63 @@
From f97b21d1e1d4bff4e667991997dd78fec3b95159 Mon Sep 17 00:00:00 2001
From: Matej Habrnal <mhabrnal@redhat.com>
Date: Tue, 14 Mar 2017 12:55:25 +0100
Subject: [PATCH] reporter-s-journal: add journal default entries
This commit adds 3 new fields into journal logs. All of them are in the
NONE dump.
The new fields are:
PROBLEM_DIR - Represents absolute file system path of problem directory.
The full path is needed because that is the way with which are
problems identified in DBus Problems2API.
PROBLEM_UUID - Represents uuid
PROBLEM_DUPHASH - Represents duphash
These new fields were needed for ABRT in Cockpit for connecting problems
with journal entries. All three are needed, because the problem directory
might be removed at the time of reading journal but a dupe can be
present there and the dupe can be identified based on DUPHASH or UUID.
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
---
src/plugins/reporter-systemd-journal.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
index 8df5ac7..957002b 100644
--- a/src/plugins/reporter-systemd-journal.c
+++ b/src/plugins/reporter-systemd-journal.c
@@ -102,6 +102,7 @@ static void msg_content_free(msg_content_t *msg_c)
#define BINARY_NAME "binary"
#define SYSLOG_ID "SYSLOG_IDENTIFIER"
#define MESSAGE_ID "MESSAGE_ID"
+#define DUMPDIR_PATH "DIR"
enum {
DUMP_NONE = 1 << 0,
@@ -122,6 +123,9 @@ static const char *const fields_default[] = {
FILENAME_EXCEPTION_TYPE ,
FILENAME_REASON ,
FILENAME_CRASH_FUNCTION ,
+ DUMPDIR_PATH ,
+ FILENAME_UUID ,
+ FILENAME_DUPHASH ,
NULL
};
@@ -302,6 +306,12 @@ int main(int argc, char **argv)
if (binary_name)
problem_data_add_text_noteditable(problem_data, BINARY_NAME, binary_name);
+ /* add problem dir path into problem data */
+ char *abspath = realpath(dump_dir_name, NULL);
+ if (abspath)
+ problem_data_add_text_noteditable(problem_data, DUMPDIR_PATH, abspath);
+ free(abspath);
+
/* crash_function element is neeeded by systemd journal messages, save ??, if it doesn't exist */
const char *crash_function = problem_data_get_content_or_NULL(problem_data, FILENAME_CRASH_FUNCTION);
if (!crash_function)
--
2.9.3

View file

@ -0,0 +1,37 @@
From d2b5f09e2757f2585eb1003fdf6db43e58013c19 Mon Sep 17 00:00:00 2001
From: Matej Marusak <mmarusak@redhat.com>
Date: Tue, 21 Mar 2017 09:04:38 +0100
Subject: [PATCH] reporter-s-journal: add count to default logs
Field count is available only in FULL dump. There are however two good
reasons why to include this in NONE dump.
1. It is quite useful to know if this problem occurred first time or is it
problem that happens a lot.
2. We need it for cockpit integration. If the problem happened more times it
will have multiple logs. By comparing count in the log and real count, we can
know, if this is the last log of the problem. (timestamps do not work ideally
for this, since the time of problem does not equal to the time of the
log - there is some delay)
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
---
src/plugins/reporter-systemd-journal.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/plugins/reporter-systemd-journal.c b/src/plugins/reporter-systemd-journal.c
index 957002b..d12296e 100644
--- a/src/plugins/reporter-systemd-journal.c
+++ b/src/plugins/reporter-systemd-journal.c
@@ -126,6 +126,7 @@ static const char *const fields_default[] = {
DUMPDIR_PATH ,
FILENAME_UUID ,
FILENAME_DUPHASH ,
+ FILENAME_COUNT ,
NULL
};
--
2.9.3

View file

@ -0,0 +1,297 @@
From 45a5ca011bd0a402cd55bbca950634280e152dea Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Fri, 7 Apr 2017 10:49:51 +0200
Subject: [PATCH 04/14] lib: fix newline issue with ask_password
The newline wasn't printed out because printing characters in terminal was
disabled (ECHO flag unset). After 'ask_password' function call, there would
have to be print function to create newline, otherwise the next message
would show up in the same line.
ECHONL flag allows to print newline character even if the ECHO flag is disabled.
Logic for the changes of the flags follows:
Change ECHO flag only when:
- ECHO is set (0) and there was no change (0) previously.
OR
- ECHO is unset (1) and there was a change (1) previously.
Change ECHONL flag only when:
- ECHONL is unset (1) and there was no change (0) previously.
OR
- ECHONL is set (0) and there was a change (1) previously.
Also ECHONL needs ICANON flag to be set (It is set by default).
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
configure.ac | 4 ++
src/cli/cli-report.c | 3 -
src/lib/client.c | 18 ++++-
src/plugins/reporter-mantisbt.c | 2 -
tests/Makefile.am | 3 +-
tests/client.at | 152 ++++++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 1 +
7 files changed, 174 insertions(+), 9 deletions(-)
create mode 100644 tests/client.at
diff --git a/configure.ac b/configure.ac
index ccefe50..c8745f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -239,6 +239,10 @@ PKG_CHECK_MODULES([AUGEAS], [augeas])
#PKG_CHECK_MODULES([LZ4], [liblz4])
+AC_SEARCH_LIBS([forkpty], [util])
+AC_REPLACE_FUNCS([forkpty])
+
+
AC_ARG_WITH(newt,
AS_HELP_STRING([--with-newt],[use newt (default is YES)]),
LIBREPORT_PARSE_WITH([newt]))
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
index c83dc20..537b194 100644
--- a/src/cli/cli-report.c
+++ b/src/cli/cli-report.c
@@ -442,9 +442,6 @@ static void ask_for_missing_settings(const char *event_name)
case OPTION_TYPE_PASSWORD:
{
opt->eo_value = ask_password(question);
- /* Newline was not added by pressing Enter because ECHO was
- disabled, so add it now. */
- puts("");
break;
}
case OPTION_TYPE_BOOL:
diff --git a/src/lib/client.c b/src/lib/client.c
index 811f33e..8a4e2ad 100644
--- a/src/lib/client.c
+++ b/src/lib/client.c
@@ -34,14 +34,26 @@ static int is_noninteractive_mode()
int set_echo(int enable)
{
struct termios t;
+ int chvalue = 0;
if (tcgetattr(STDIN_FILENO, &t) < 0)
return 0;
- /* No change needed? */
- if (!(t.c_lflag & ECHO) == !enable)
+ /* ECHO flag change if needed */
+ if ((!(t.c_lflag & ECHO)) == enable)
+ {
+ t.c_lflag ^= ECHO;
+ chvalue = 1;
+ }
+ /* ECHONL flag change if needed */
+ if ((!(t.c_lflag & ECHONL)) != enable)
+ {
+ t.c_lflag ^= ECHONL;
+ chvalue = 1;
+ }
+
+ if (!chvalue)
return 0;
- t.c_lflag ^= ECHO;
if (tcsetattr(STDIN_FILENO, TCSANOW, &t) < 0)
perror_msg_and_die("tcsetattr");
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
index 5062d32..622af87 100644
--- a/src/plugins/reporter-mantisbt.c
+++ b/src/plugins/reporter-mantisbt.c
@@ -62,8 +62,6 @@ static char *
ask_mantisbt_password(const char *message)
{
char *password = ask_password(message);
- /* TODO: this should be fixed in ask_password() as other tools have the same problem */
- putchar('\n');
if (password == NULL || password[0] == '\0')
{
set_xfunc_error_retval(EXIT_CANCEL_BY_USER);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index df19403..2b8972d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -59,7 +59,8 @@ TESTSUITE_AT = \
event_config.at \
proc_helpers.at \
compress.at \
- forbidden_words.at
+ forbidden_words.at \
+ client.at
TESTSUITE_AT_IN = \
bugzilla_plugin.at
diff --git a/tests/client.at b/tests/client.at
new file mode 100644
index 0000000..b643789
--- /dev/null
+++ b/tests/client.at
@@ -0,0 +1,152 @@
+# -*- Autotest -*-
+
+AT_BANNER([Client])
+
+## ---------------- ##
+## set_echo ##
+## ---------------- ##
+
+AT_TESTFUN([set_echo],
+[[
+#include <assert.h>
+#include "client.h"
+#include "internal_libreport.h"
+#include <pty.h>
+
+#define ECHO_TEST (!(new_mode.c_lflag & ECHO))
+#define ECHONL_TEST (!(new_mode.c_lflag & ECHONL))
+
+int main (void)
+{
+ int master_pty;
+
+ pid_t pid = forkpty(&master_pty, NULL, NULL, NULL);
+ if (pid < 0) {
+ perror_msg_and_die("forkpty failed.");
+ }
+
+ if (pid == 0) {
+ int check, result, changed;
+ struct termios old_mode, new_mode;
+ assert(isatty(STDIN_FILENO) == 1);
+
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ old_mode = new_mode;
+
+ new_mode.c_lflag |= ECHO;
+ new_mode.c_lflag &= ~(ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag &= ~(ECHO);
+ new_mode.c_lflag |= ECHONL;
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result == changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag |= ECHO;
+ new_mode.c_lflag &= ~(ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result != changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag &= ~(ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ new_mode.c_lflag |= (ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 0;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result != changed);
+ assert(ECHO_TEST == 1);
+ assert(ECHONL_TEST == 0);
+
+ new_mode.c_lflag |= (ECHO | ECHONL);
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &new_mode);
+ assert(check == 0);
+
+ changed = 1;
+ result = set_echo(changed);
+ check = tcgetattr(STDIN_FILENO, &new_mode);
+ assert(check == 0);
+ assert(result == changed);
+ assert(ECHO_TEST == 0);
+ assert(ECHONL_TEST == 1);
+
+ check = tcsetattr(STDIN_FILENO, TCSANOW, &old_mode);
+ assert(check == 0);
+
+ return 0;
+ }
+
+ int status;
+ if (safe_waitpid(pid, &status, 0) < 0) {
+ perror_msg_and_die("waitpid failed.");
+ }
+
+ if (WIFEXITED(status)) {
+ return WEXITSTATUS(status);
+ }
+ else if (WIFSIGNALED(status)) {
+ error_msg_and_die("Killed by signal %d.", WTERMSIG(status));
+ }
+ else {
+ error_msg_and_die("Test unexpectedly stopped/continued.");
+ }
+
+ return 0;
+}
+]])
diff --git a/tests/testsuite.at b/tests/testsuite.at
index a0865b2..45ff6da 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -30,3 +30,4 @@ m4_include([bugzilla_plugin.at])
m4_include([proc_helpers.at])
m4_include([compress.at])
m4_include([forbidden_words.at])
+m4_include([client.at])
--
2.9.5

View file

@ -0,0 +1,26 @@
From 864b391f904963296b59fc26142f0dc8b5f34833 Mon Sep 17 00:00:00 2001
From: Julius Milan <jmilan@redhat.com>
Date: Wed, 26 Apr 2017 11:07:09 +0200
Subject: [PATCH 05/14] configure.ac: update glib min. version dependency
Related to rhbz#1445669
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index c8745f8..15c743f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,7 +224,7 @@ AC_SUBST(PYTHON3_LIBS)
AC_SUBST(python3dir, $PYTHON3_DIR)
AC_SUBST(py3execdir, $PYTHON3_EXECDIR)
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.21])
+PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.43])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
PKG_CHECK_MODULES([DBUS], [dbus-1])
PKG_CHECK_MODULES([LIBXML], [libxml-2.0])
--
2.9.5

View file

@ -0,0 +1,401 @@
From f183ccbe0f6e954ec2c9d0e1a1296ac54ff637e5 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Tue, 25 Apr 2017 18:20:08 +0200
Subject: [PATCH 08/14] lib: replace hash table with list
Order of login credentials wasn't guaranteed, because event options with missing
values were inserted into hash table and then extracted from it.
I renamed function validate_event as its name was a little bit confusing. The function
returns options that are missing input values and error message should be displayed.
This fixes abrt/abrt#1231
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
src/cli/cli-report.c | 32 ++++++-------
src/gui-wizard-gtk/wizard.c | 4 +-
src/include/event_config.h | 15 +++++-
src/lib/event_config.c | 36 +++++++++++----
src/report-newt/report-newt.c | 25 +++++-----
tests/event_config.at | 103 ++++++++++++++++++++++++++++++++++++++++++
6 files changed, 173 insertions(+), 42 deletions(-)
diff --git a/src/cli/cli-report.c b/src/cli/cli-report.c
index 537b194..fd14888 100644
--- a/src/cli/cli-report.c
+++ b/src/cli/cli-report.c
@@ -414,19 +414,17 @@ static void ask_for_missing_settings(const char *event_name)
{
for (int i = 0; i < 3; ++i)
{
- GHashTable *error_table = validate_event(event_name);
- if (!error_table)
+ GList *err_list = NULL, *iter = NULL;
+ err_list = get_options_with_err_msg(event_name);
+ if(!err_list)
return;
event_config_t *event_config = get_event_config(event_name);
- GHashTableIter iter;
- char *opt_name, *err_msg;
- g_hash_table_iter_init(&iter, error_table);
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
+ for (iter = err_list; iter; iter = iter->next)
{
- event_option_t *opt = get_event_option_from_list(opt_name,
- event_config->options);
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
+ event_option_t *opt = get_event_option_from_list(err_data->invopt_name, event_config->options);
free(opt->eo_value);
opt->eo_value = NULL;
@@ -459,25 +457,27 @@ static void ask_for_missing_settings(const char *event_name)
free(question);
}
- g_hash_table_destroy(error_table);
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
- error_table = validate_event(event_name);
- if (!error_table)
+ err_list = get_options_with_err_msg(event_name);
+ if (!err_list)
return;
alert(_("Your input is not valid, because of:"));
- g_hash_table_iter_init(&iter, error_table);
- while (g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg))
+ for (iter = err_list; iter; iter = iter -> next)
{
- char *msg = xasprintf(_("Bad value for '%s': %s"), opt_name, err_msg);
+ invalid_option_t *err_data = (invalid_option_t *)iter->data;
+ char *msg = xasprintf(_("Bad value for '%s': %s"),
+ err_data->invopt_name,
+ err_data->invopt_error);
alert(msg);
free(msg);
}
- g_hash_table_destroy(error_table);
+ g_list_free_full(err_list, (GDestroyNotify)free_invalid_options);
}
- /* we ask for 3 times and still don't have valid infromation */
+ /* we ask for 3 times and still don't have valid information */
error_msg_and_die("Invalid input, exiting.");
}
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index c7136d6..d337805 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -914,10 +914,10 @@ static gint find_by_button(gconstpointer a, gconstpointer button)
static void check_event_config(const char *event_name)
{
- GHashTable *errors = validate_event(event_name);
+ GList *errors = get_options_with_err_msg(event_name);
if (errors != NULL)
{
- g_hash_table_unref(errors);
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
show_event_config_dialog(event_name, GTK_WINDOW(g_top_most_window));
update_private_ticket_creation_warning_for_selected_event();
}
diff --git a/src/include/event_config.h b/src/include/event_config.h
index fdcb3b4..0e0df98 100644
--- a/src/include/event_config.h
+++ b/src/include/event_config.h
@@ -63,6 +63,17 @@ typedef struct
bool is_advanced;
} event_option_t;
+/*
+ * struct holds
+ * invopt_name = name of the option with invalid value
+ * invopt_error = string of the error message
+ */
+typedef struct
+{
+ char *invopt_name;
+ char *invopt_error;
+} invalid_option_t;
+
event_option_t *new_event_option(void);
void free_event_option(event_option_t *p);
@@ -108,6 +119,8 @@ bool ec_restricted_access_enabled(event_config_t *ec);
void free_event_config(event_config_t *p);
+invalid_option_t *new_invalid_option(void);
+void free_invalid_options(invalid_option_t* p);
void load_event_description_from_file(event_config_t *event_config, const char* filename);
@@ -126,7 +139,7 @@ extern GHashTable *g_event_config_list; // for iterating through entire list o
GList *export_event_config(const char *event_name);
void unexport_event_config(GList *env_list);
-GHashTable *validate_event(const char *event_name);
+GList *get_options_with_err_msg(const char *event_name);
/*
* Checks usability of problem's backtrace rating against required rating level
diff --git a/src/lib/event_config.c b/src/lib/event_config.c
index 9c58d00..c5b7b17 100644
--- a/src/lib/event_config.c
+++ b/src/lib/event_config.c
@@ -22,6 +22,11 @@
GHashTable *g_event_config_list;
static GHashTable *g_event_config_symlinks;
+invalid_option_t *new_invalid_option(void)
+{
+ return xzalloc(sizeof(invalid_option_t));
+}
+
event_option_t *new_event_option(void)
{
return xzalloc(sizeof(event_option_t));
@@ -121,6 +126,15 @@ bool ec_restricted_access_enabled(event_config_t *ec)
return eo->eo_value != NULL && string_to_bool(eo->eo_value);
}
+void free_invalid_options(invalid_option_t *p)
+{
+ if (!p)
+ return;
+ free(p->invopt_name);
+ free(p->invopt_error);
+ free(p);
+}
+
void free_event_option(event_option_t *p)
{
if (!p)
@@ -427,7 +441,7 @@ static char *validate_event_option(event_option_t *opt)
return NULL;
}
-GHashTable *validate_event(const char *event_name)
+GList *get_options_with_err_msg(const char *event_name)
{
INITIALIZE_LIBREPORT();
@@ -435,21 +449,23 @@ GHashTable *validate_event(const char *event_name)
if (!config)
return NULL;
- GHashTable *errors = g_hash_table_new_full(g_str_hash, g_str_equal, free, free);
- GList *li;
+ GList *iter, *err_list = NULL;
- for (li = config->options; li; li = li->next)
+ for (iter = config->options; iter; iter = iter->next)
{
- event_option_t *opt = (event_option_t *)li->data;
+ event_option_t *opt = (event_option_t *)iter->data;
char *err = validate_event_option(opt);
if (err)
- g_hash_table_insert(errors, xstrdup(opt->eo_name), err);
+ {
+ invalid_option_t *inv_opt = new_invalid_option();
+ inv_opt->invopt_name = xstrdup(opt->eo_name);
+ inv_opt->invopt_error = xstrdup(err);
+ err_list = g_list_prepend(err_list, inv_opt);
+ }
}
- if (g_hash_table_size(errors))
- return errors;
-
- g_hash_table_destroy(errors);
+ if (err_list != NULL)
+ return g_list_reverse(err_list);
return NULL;
}
diff --git a/src/report-newt/report-newt.c b/src/report-newt/report-newt.c
index 2427d86..61e279d 100644
--- a/src/report-newt/report-newt.c
+++ b/src/report-newt/report-newt.c
@@ -93,15 +93,14 @@ static int select_reporters(GArray *reporters)
static int configure_reporter(struct reporter *r, bool skip_if_valid)
{
- GHashTable *error_table;
- GList *option;
+ GList *error_list, *option;
event_option_t *opt;
bool first = true, cancel = false;
int num_opts, i;
newtComponent text, *options, button_ok, button_cancel, form;
newtGrid grid, ogrid, bgrid;
- while ((error_table = validate_event(r->name)) ||
+ while ((error_list = get_options_with_err_msg(r->name)) ||
(!skip_if_valid && first && r->config))
{
text = newtTextboxReflowed(0, 0, ec_get_screen_name(r->config) ?
@@ -151,19 +150,19 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
form = newtForm(NULL, NULL, 0);
newtGridAddComponentsToForm(grid, form, 1);
- if (!first && error_table)
+ if (!first && error_list)
{
- GHashTableIter iter;
- char *opt_name, *err_msg, buf[4096];
+ GList *iter;
+ char buf[4096];
/* Catenate the error messages */
buf[0] = '\0';
- for (g_hash_table_iter_init(&iter, error_table);
- g_hash_table_iter_next(&iter, (void**)&opt_name, (void**)&err_msg); )
+ for (iter = error_list; iter; iter = iter->next)
{
- opt = get_event_option_from_list(opt_name, r->config->options);
+ invalid_option_t *inv_data = (invalid_option_t *)iter->data;
+ opt = get_event_option_from_list(inv_data->invopt_name, r->config->options);
snprintf(buf + strlen(buf), sizeof (buf) - strlen(buf), "%s: %s\n",
- opt->eo_label ? opt->eo_label : opt->eo_name, err_msg);
+ opt->eo_label ? opt->eo_label : opt->eo_name, inv_data->invopt_error);
}
newtWinMessage(_("Error"), _("Ok"), buf);
@@ -201,14 +200,14 @@ static int configure_reporter(struct reporter *r, bool skip_if_valid)
free(options);
- if (error_table)
- g_hash_table_destroy(error_table);
+ if (error_list)
+ g_list_free_full(error_list,(GDestroyNotify)free_invalid_options);
if (cancel)
break;
first = false;
}
- return !error_table;
+ return !error_list;
}
struct log {
diff --git a/tests/event_config.at b/tests/event_config.at
index 5baf000..badca73 100644
--- a/tests/event_config.at
+++ b/tests/event_config.at
@@ -58,3 +58,106 @@ TS_MAIN
}
TS_RETURN_MAIN
]])
+
+## ------------------------ ##
+## get_options_with_err_msg ##
+## ------------------------ ##
+
+AT_TESTFUN([get_options_with_err_msg], [[
+#include "testsuite.h"
+#include "internal_libreport.h"
+
+event_option_t* create_new_option(const char *n, const char *v, option_type_t t, int ae)
+{
+ event_option_t *op = new_event_option();
+ op->eo_name = xstrdup(n);
+ op->eo_value = NULL;
+ if(v != NULL)
+ op->eo_value = xstrdup(v);
+
+ op->eo_type = t;
+ op->eo_allow_empty = ae;
+
+ return op;
+}
+
+TS_MAIN
+{
+ GList *errors = NULL, *iter = NULL;
+ invalid_option_t *e_op;
+
+ if (!g_event_config_list)
+ g_event_config_list = g_hash_table_new_full(
+ g_str_hash, g_str_equal, free, (GDestroyNotify) free_event_config
+ );
+
+ {
+ event_config_t *evnt = new_event_config("Bugster0");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster0"), evnt);
+
+ errors = get_options_with_err_msg("Bugster0");
+ e_op = (invalid_option_t *)errors->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login first");
+
+ iter = g_list_next(errors);
+ e_op = (invalid_option_t *)iter->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password second");
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
+
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
+ }
+
+ {
+ event_config_t *evnt = new_event_config("Bugster1");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", NULL, OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", NULL, OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster1"), evnt);
+
+ errors = get_options_with_err_msg("Bugster1");
+ e_op = (invalid_option_t *)errors->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Password", "Show password first");
+
+ iter = g_list_next(errors);
+ e_op = (invalid_option_t *)iter->data;
+
+ TS_ASSERT_STRING_EQ(e_op->invopt_name, "Bugtest_Login", "Show login second");
+ TS_ASSERT_PTR_IS_NULL(g_list_next(iter));
+
+ g_list_free_full(errors, (GDestroyNotify)free_invalid_options);
+ }
+
+ {
+ event_config_t *evnt = new_event_config("Bugster2");
+ event_option_t *opt_login = create_new_option("Bugtest_Login", "login", OPTION_TYPE_TEXT, 0);
+ event_option_t *opt_passwd = create_new_option("Bugtest_Password", "password", OPTION_TYPE_PASSWORD, 0);
+ event_option_t *opt_url = create_new_option("Bugtest_URL", "bug.test", OPTION_TYPE_TEXT, 0);
+
+ evnt->options = g_list_append(evnt->options, opt_login);
+ evnt->options = g_list_append(evnt->options, opt_passwd);
+ evnt->options = g_list_append(evnt->options, opt_url);
+ g_hash_table_insert(g_event_config_list, xstrdup("Bugster2"), evnt);
+
+ errors = get_options_with_err_msg("Bugster2");
+
+ TS_ASSERT_PTR_IS_NULL(errors);
+ }
+
+ free_event_config_data();
+}
+TS_RETURN_MAIN
+]])
--
2.9.5

View file

@ -0,0 +1,63 @@
From 52bc62513f23a7a379ba48dc2895626cf842bb1a Mon Sep 17 00:00:00 2001
From: Matej Habrnal <mhabrnal@redhat.com>
Date: Thu, 15 Jun 2017 17:12:53 +0200
Subject: [PATCH 10/14] dd: extend create_dump_dir to allow set pid in dumpdir
name
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
---
src/include/dump_dir.h | 3 +++
src/lib/create_dump_dir.c | 9 +++++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/include/dump_dir.h b/src/include/dump_dir.h
index fb3a470..793caf4 100644
--- a/src/include/dump_dir.h
+++ b/src/include/dump_dir.h
@@ -486,6 +486,9 @@ typedef int (*save_data_call_back)(struct dump_dir *, void *args);
struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type,
uid_t uid, save_data_call_back save_data, void *args);
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type,
+ pid_t pid, uid_t uid, save_data_call_back save_data, void *args);
+
/* Creates a new archive from the dump directory contents
*
* The dd argument must be opened for reading.
diff --git a/src/lib/create_dump_dir.c b/src/lib/create_dump_dir.c
index 1c6f1fc..d690c78 100644
--- a/src/lib/create_dump_dir.c
+++ b/src/lib/create_dump_dir.c
@@ -42,7 +42,7 @@ static struct dump_dir *try_dd_create(const char *base_dir_name, const char *dir
return dd;
}
-struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
+struct dump_dir *create_dump_dir_ext(const char *base_dir_name, const char *type, pid_t pid, uid_t uid, save_data_call_back save_data, void *args)
{
INITIALIZE_LIBREPORT();
@@ -59,7 +59,7 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
return NULL;
}
- char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)getpid());
+ char *problem_id = xasprintf("%s-%s.%ld-%lu"NEW_PD_SUFFIX, type, iso_date_string(&(tv.tv_sec)), (long)tv.tv_usec, (long)pid);
log_info("Saving to %s/%s with uid %d", base_dir_name, problem_id, uid);
@@ -151,6 +151,11 @@ struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, ui
return dd;
}
+struct dump_dir *create_dump_dir(const char *base_dir_name, const char *type, uid_t uid, save_data_call_back save_data, void *args)
+{
+ return create_dump_dir_ext(base_dir_name, type, getpid(), uid, save_data, args);
+}
+
int save_problem_data_in_dump_dir(struct dump_dir *dd, problem_data_t *problem_data)
{
INITIALIZE_LIBREPORT();
--
2.9.5

View file

@ -0,0 +1,25 @@
From d58bbe86686b3a601211f1f6a0186c73a6afc999 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Tue, 20 Jun 2017 16:05:58 +0200
Subject: [PATCH 11/14] augeas: exclude format files
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
augeas/libreport.aug | 1 +
1 file changed, 1 insertion(+)
diff --git a/augeas/libreport.aug b/augeas/libreport.aug
index 46ffb73..dd4252e 100644
--- a/augeas/libreport.aug
+++ b/augeas/libreport.aug
@@ -31,6 +31,7 @@ module Libreport =
. (incl (Sys.getenv("HOME") . "/.cache/abrt/events/*"))
. (excl "/etc/libreport/plugins/bugzilla_format*")
. (excl "/etc/libreport/plugins/mantisbt_format*")
+ . (excl "/etc/libreport/plugins/catalog*")
. Util.stdexcl
let xfm = transform lns filter
--
2.9.5

View file

@ -0,0 +1,66 @@
From a6522407b95cf1410ecb33cbf2adff3a3998f686 Mon Sep 17 00:00:00 2001
From: Martin Kutlak <mkutlak@redhat.com>
Date: Thu, 29 Jun 2017 12:10:25 +0200
Subject: [PATCH 12/14] bugzilla: add check if option -d was entered
The change from commit 946c522ba702c11b7b336552461747541e714bb7 caused that reporter was ALWAYS trying to read
from problem directory. And because the default value for it is set to ".",
running reporter from outside of problem directory caused errors.
Signed-off-by: Martin Kutlak <mkutlak@redhat.com>
---
src/plugins/reporter-bugzilla.c | 29 +++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
diff --git a/src/plugins/reporter-bugzilla.c b/src/plugins/reporter-bugzilla.c
index 7b7fd22..5364cd4 100644
--- a/src/plugins/reporter-bugzilla.c
+++ b/src/plugins/reporter-bugzilla.c
@@ -334,18 +334,21 @@ int main(int argc, char **argv)
export_abrt_envvars(0);
map_string_t *settings = new_map_string();
- problem_data_t *problem_data;
+ problem_data_t *problem_data = NULL;
- /* pull in some defaults from os-release */
- problem_data = create_problem_data_for_reporting(dump_dir_name);
- if (!problem_data)
- xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
- else
+ if (opts & OPT_d)
{
- map_string_t *osinfo = new_map_string();
- problem_data_get_osinfo(problem_data, osinfo);
- set_default_settings(osinfo, settings);
- free_map_string(osinfo);
+ /* pull in some defaults from os-release */
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
+ if (!problem_data)
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
+ else
+ {
+ map_string_t *osinfo = new_map_string();
+ problem_data_get_osinfo(problem_data, osinfo);
+ set_default_settings(osinfo, settings);
+ free_map_string(osinfo);
+ }
}
{
@@ -554,6 +557,12 @@ int main(int argc, char **argv)
free_report_result(reported_to);
}
+ if (!(opts & OPT_d))
+ problem_data = create_problem_data_for_reporting(dump_dir_name);
+
+ if (!problem_data)
+ xfunc_die(); /* create_problem_data_for_reporting already emitted error msg */
+
const char *component = problem_data_get_content_or_die(problem_data, FILENAME_COMPONENT);
const char *duphash = problem_data_get_content_or_NULL(problem_data, FILENAME_DUPHASH);
//COMPAT, remove after 2.1 release
--
2.9.5

View file

@ -0,0 +1,26 @@
From f15195d7c317a94405b33102b36e1a8d7dcb214b Mon Sep 17 00:00:00 2001
From: Matej Marusak <mmarusak@redhat.com>
Date: Fri, 14 Jul 2017 08:24:35 +0200
Subject: [PATCH 13/14] reporter-mantisbt: Fix typo in help
Signed-off-by: Matej Marusak <mmarusak@redhat.com>
---
src/plugins/reporter-mantisbt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/plugins/reporter-mantisbt.c b/src/plugins/reporter-mantisbt.c
index 622af87..3705bc7 100644
--- a/src/plugins/reporter-mantisbt.c
+++ b/src/plugins/reporter-mantisbt.c
@@ -243,7 +243,7 @@ int main(int argc, char **argv)
"\nTRACKER_NAME to URL field. This option is applied only when a new issue is to be"
"\nfiled. The default value is 'ABRT Server'"
"\n"
- "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisb.conf"
+ "\nIf not specified, CONFFILE defaults to "CONF_DIR"/plugins/mantisbt.conf"
"\nIts lines should have 'PARAM = VALUE' format."
"\nRecognized string parameters: MantisbtURL, Login, Password, Project, ProjectVersion."
"\nRecognized boolean parameter (VALUE should be 1/0, yes/no): SSLVerify, CreatePrivate."
--
2.9.5

File diff suppressed because it is too large Load diff

View file

@ -2,18 +2,30 @@
%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%define satyr_ver 0.22
%define glib_ver 2.43
Summary: Generic library for reporting various problems
Name: libreport
Version: 2.9.0
Release: 5%{?dist}
Version: 2.9.1
Release: 3%{?dist}
License: GPLv2+
URL: https://abrt.readthedocs.org/
Source: https://fedorahosted.org/released/abrt/%{name}-%{version}.tar.gz
Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
Source1: autogen.sh
# git format-patch %%{Version} -N -M --topo-order
# i=0; for p in `ls 0*.patch`; do printf "Patch%04d: %s\n" $i $p; ((i++)); done
Patch0000: 0001-augeas-trim-spaces-on-eol-around-value-separator.patch
Patch0001: 0002-reporter-s-journal-add-journal-default-entries.patch
Patch0002: 0003-reporter-s-journal-add-count-to-default-logs.patch
Patch0003: 0004-lib-fix-newline-issue-with-ask_password.patch
Patch0004: 0005-configure.ac-update-glib-min.-version-dependency.patch
Patch0005: 0006-lib-replace-hash-table-with-list.patch
Patch0006: 0007-dd-extend-create_dump_dir-to-allow-set-pid-in-dumpdi.patch
Patch0007: 0008-augeas-exclude-format-files.patch
Patch0008: 0009-bugzilla-add-check-if-option-d-was-entered.patch
Patch0009: 0010-reporter-mantisbt-Fix-typo-in-help.patch
Patch0010: 0011-logging-rename-log-to-log_warning.patch
# git is need for '%%autosetup -S git' which automatically applies all the
# patches above. Please, be aware that the patches must be generated
@ -31,13 +43,13 @@ BuildRequires: libxml2-devel
BuildRequires: libtar-devel
BuildRequires: intltool
BuildRequires: libtool
BuildRequires: nss-devel
BuildRequires: texinfo
BuildRequires: asciidoc
BuildRequires: xmlto
BuildRequires: newt-devel
BuildRequires: libproxy-devel
BuildRequires: satyr-devel >= %{satyr_ver}
BuildRequires: glib2-devel >= %{glib_ver}
BuildRequires: glibc-all-langpacks
BuildRequires: xmlrpc-c-devel
@ -47,8 +59,15 @@ BuildRequires: augeas-devel
BuildRequires: augeas
BuildRequires: xz
BuildRequires: lz4
# Required for the temporary modularity hack, see below
%if 0%{?_module_build}
BuildRequires: sed
%endif
Requires: libreport-filesystem = %{version}-%{release}
Requires: satyr >= %{satyr_ver}
Requires: glib2 >= %{glib_ver}
Requires: xz
Requires: lz4
@ -101,7 +120,17 @@ Python bindings for report-libs.
%package python3
Summary: Python 3 bindings for report-libs
%if 0%{?_module_build}
# This is required for F26 Boltron (the modular release)
# Different parts of libreport are shipped with different
# modules with different dist tags; we need to weaken the
# strict NVR dependency to make it work. Temporary and
# limited to F26 Boltron.
%global distfreerelease %(echo %{release}|sed 's/%{?dist}$//'||echo 0)
Requires: libreport >= %{version}-%{distfreerelease}
%else
Requires: libreport = %{version}-%{release}
%endif
Requires: dnf
%description python3
@ -472,6 +501,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_includedir}/libreport/internal_abrt_dbus.h
%{_includedir}/libreport/internal_libreport.h
%{_includedir}/libreport/xml_parser.h
%{_includedir}/libreport/helpers
%{_libdir}/libreport.so
%{_libdir}/libabrt_dbus.so
%{_libdir}/pkgconfig/libreport.pc
@ -712,8 +742,42 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%{_mandir}/man5/bugzilla_format_anaconda.conf.5.*
%{_mandir}/man5/bugzilla_formatdup_anaconda.conf.5.*
%changelog
* Thu Aug 31 2017 Julius Milan <jmilan@redhat.com> 2.9.1-3
- logging: rename log() to log_warning()
- reporter-mantisbt: Fix typo in help
- bugzilla: add check if option -d was entered
- dd: extend create_dump_dir to allow set pid in dumpdir name
- lib: fix to ensure order of login credentials when reporting using abrt-cli
- configure.ac: update glib min. version dependency
- lib: fix newline issue with ask_password
- Resolves: #1445669, #1481205
* Thu Apr 13 2017 Matej Habrnal <mhabrnal@redhat.com> 2.9.1-2
- add journal default entries to reporter-systemd-journal
- augeas: trim spaces on eol, around value separator
- Resolves: #1434414
* Wed Mar 15 2017 Matej Habrnal <mhabrnal@redhat.com> 2.9.1-1
- build: do not upload tarball to fedorahosted.org
- spec: do not use fedorahosted.org as source
- build: fix generating list of dependences in autogen.sh
- build: generate new release entries with date
- report-newt: free allocated variables, don't close dd twice
- build: fix scratch-build target
- changelog: reflect the PR
- lib: several bug fixes in parsing of mountinfo
- lib: correctly recognize chroot in container
- lib: declare CONTAINER_ROOTS element name
- lib: add more log wrappers for perror
- reporter-bugzilla: use /etc/os-release for default url
- configure.ac: Remove nss dependency
- spec: include testsuite headers in the devel package
- tests: include testsuite.h in the dist archive
- maint: check pulled .po files for errors
- build: fix bug in changelog generating in release target
- changelog: fix typos
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.9.0-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild

View file

@ -1 +1 @@
SHA512 (libreport-2.9.0.tar.gz) = e53ccdf9bad19a48374b14f1b8057cc3e45af05482950b5c4178bec4b0b3ca8165514ddf89b4fde2b5d20d12d31a2167016b94ca3b76de57414dee0078efc47c
SHA512 (libreport-2.9.1.tar.gz) = 2cffb44fd8da625a9a0613f91ce3d485fe21b0a1f5932f6d6bfbdb4d41337f95c49f525556596aeef2fc3737015151d43250f287dc624f97469f087ff9213bde