Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ce22458aef | ||
|
|
ea83325b23 | ||
|
|
b730895e1c | ||
|
|
221ea17013 |
13 changed files with 2540 additions and 6 deletions
100
0001-augeas-trim-spaces-on-eol-around-value-separator.patch
Normal file
100
0001-augeas-trim-spaces-on-eol-around-value-separator.patch
Normal 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
|
||||
|
||||
63
0002-reporter-s-journal-add-journal-default-entries.patch
Normal file
63
0002-reporter-s-journal-add-journal-default-entries.patch
Normal 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
|
||||
|
||||
37
0003-reporter-s-journal-add-count-to-default-logs.patch
Normal file
37
0003-reporter-s-journal-add-count-to-default-logs.patch
Normal 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
|
||||
|
||||
297
0004-lib-fix-newline-issue-with-ask_password.patch
Normal file
297
0004-lib-fix-newline-issue-with-ask_password.patch
Normal 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
|
||||
|
||||
26
0005-configure.ac-update-glib-min.-version-dependency.patch
Normal file
26
0005-configure.ac-update-glib-min.-version-dependency.patch
Normal 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
|
||||
|
||||
401
0006-lib-replace-hash-table-with-list.patch
Normal file
401
0006-lib-replace-hash-table-with-list.patch
Normal 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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
25
0008-augeas-exclude-format-files.patch
Normal file
25
0008-augeas-exclude-format-files.patch
Normal 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
|
||||
|
||||
66
0009-bugzilla-add-check-if-option-d-was-entered.patch
Normal file
66
0009-bugzilla-add-check-if-option-d-was-entered.patch
Normal 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
|
||||
|
||||
26
0010-reporter-mantisbt-Fix-typo-in-help.patch
Normal file
26
0010-reporter-mantisbt-Fix-typo-in-help.patch
Normal 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
|
||||
|
||||
1366
0011-logging-rename-log-to-log_warning.patch
Normal file
1366
0011-logging-rename-log-to-log_warning.patch
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (libreport-2.9.0.tar.gz) = e53ccdf9bad19a48374b14f1b8057cc3e45af05482950b5c4178bec4b0b3ca8165514ddf89b4fde2b5d20d12d31a2167016b94ca3b76de57414dee0078efc47c
|
||||
SHA512 (libreport-2.9.1.tar.gz) = 2cffb44fd8da625a9a0613f91ce3d485fe21b0a1f5932f6d6bfbdb4d41337f95c49f525556596aeef2fc3737015151d43250f287dc624f97469f087ff9213bde
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue