Add patch for rhbz#2019402

This commit is contained in:
Matěj Grabovský 2022-01-13 13:00:47 +01:00
parent b5305fd236
commit de63ffd8d8
11 changed files with 58 additions and 424 deletions

View File

@ -1,39 +0,0 @@
From 1c646a2948d287368ec1a82b444e8175ebfbf5b9 Mon Sep 17 00:00:00 2001
From: Ernestas Kulik <ekulik@redhat.com>
Date: Tue, 25 Aug 2020 15:05:31 +0300
Subject: [PATCH] gui-wizard-gtk: wizard: Remove variable
cmd_output is no longer used since
440bcfa8526d50f122ec14e19f2bf2aa336f61e7 and trying to call
g_string_free() on it results in a critical warning.
---
src/gui-wizard-gtk/wizard.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 44900448..a4d7caa0 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -231,8 +231,6 @@ typedef struct
static page_obj_t pages[NUM_PAGES];
-static GString *cmd_output = NULL;
-
/* Utility functions */
static void clear_warnings(void);
@@ -1667,10 +1665,6 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
log_notice("done running event on '%s': %d", g_dump_dir_name, retval);
append_to_textview(g_tv_event_log, "\n");
- /* Free child output buffer */
- g_string_free(cmd_output, TRUE);
- cmd_output = NULL;
-
/* Hide spinner and stop btn */
gtk_widget_hide(GTK_WIDGET(g_spinner_event_log));
gtk_widget_hide(g_btn_stop);
--
2.28.0

View File

@ -0,0 +1,49 @@
From 976d3ffcee73a5d832cb757f2dc39aea21abd2f2 Mon Sep 17 00:00:00 2001
From: Michal Fabik <mfabik@redhat.com>
Date: Thu, 4 Nov 2021 22:14:08 +0100
Subject: [PATCH] tests: Don't use deprecated assertEquals
unittest.assertEquals was deprecated in Python 3.2 and will no longer be
supported in 3.11
Resolves:
https://bugzilla.redhat.com/show_bug.cgi?id=2019402
---
tests/client_python.at | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tests/client_python.at b/tests/client_python.at
index d026ed70..75ec1890 100644
--- a/tests/client_python.at
+++ b/tests/client_python.at
@@ -35,22 +35,22 @@ class TestReportClientVerbose(unittest.TestCase):
del sys.modules["reportclient"]
def test_default(self):
- self.assertEquals(self.reportclient.verbose, 0)
+ self.assertEqual(self.reportclient.verbose, 0)
def test_assign(self):
self.reportclient.set_verbosity(1)
- self.assertEquals(self.reportclient.verbose, 1)
- self.assertEquals(os.environ["ABRT_VERBOSE"], "1")
+ self.assertEqual(self.reportclient.verbose, 1)
+ self.assertEqual(os.environ["ABRT_VERBOSE"], "1")
def test_load_from_environ(self):
os.environ["ABRT_VERBOSE"] = "2"
reload(self.reportclient)
- self.assertEquals(self.reportclient.verbose, 2)
+ self.assertEqual(self.reportclient.verbose, 2)
def test_recover_from_invalid_environ(self):
os.environ["ABRT_VERBOSE"] = "foo"
reload(self.reportclient)
- self.assertEquals(self.reportclient.verbose, 0)
+ self.assertEqual(self.reportclient.verbose, 0)
if __name__ == "__main__":
--
2.31.1

View File

@ -1,49 +0,0 @@
From 85b687098bcedb67285ab787b8bd506d328c34e0 Mon Sep 17 00:00:00 2001
From: Ernestas Kulik <ekulik@redhat.com>
Date: Tue, 25 Aug 2020 15:17:54 +0300
Subject: [PATCH] gui-wizard-gtk: wizard: Fix invalid memory read
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This partially reverts 7aba6e53bbfeedaacd95bbaa5e0c5e325a3e6a8d, which
results in “event” being inappropriately freed before a “goto” statement
is executed and the value stored in “g_event_selected” is read.
---
src/gui-wizard-gtk/wizard.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index a4d7caa0..3e69a513 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -2635,7 +2635,7 @@ static gint select_next_page_no(gint current_page_no)
log_info("%s: Looking for next event to process", __func__);
/* (note: this frees and sets to NULL g_event_selected) */
- g_autofree char *event = setup_next_processed_event(&g_auto_event_list);
+ char *event = setup_next_processed_event(&g_auto_event_list);
if (!event)
{
current_page_no = PAGENO_EVENT_PROGRESS - 1;
@@ -2644,6 +2644,8 @@ static gint select_next_page_no(gint current_page_no)
if (!get_sensitive_data_permission(event))
{
+ free(event);
+
cancel_processing(g_lbl_event_log, /* default message */ NULL, TERMINATE_NOFLAGS);
current_page_no = PAGENO_EVENT_PROGRESS - 1;
goto again;
@@ -2659,6 +2661,8 @@ static gint select_next_page_no(gint current_page_no)
if (libreport_get_global_stop_on_not_reportable())
{
+ free(event);
+
cancel_processing(g_lbl_event_log, msg, TERMINATE_NOFLAGS);
current_page_no = PAGENO_EVENT_PROGRESS - 1;
goto again;
--
2.28.0

View File

@ -1,53 +0,0 @@
From ce557c0fb309184a9a8fc38a76404324d94803b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Fri, 25 Sep 2020 19:23:51 +0200
Subject: [PATCH] gui-wizard-gtk: Fix a double free condition
We may only free `log_msg` in `update_command_run_log()` if it is the
result of the call to `g_strdup_printf()`, otherwise the caller takes
care of it.
Partially reverts 7aba6e53.
Resolves rhbz#1882319
---
src/gui-wizard-gtk/wizard.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 8a4486f2..a532c633 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -1385,7 +1385,7 @@ static void cancel_processing(GtkLabel *status_label, const char *message, int t
pango_attr_list_unref(list);
}
-static void update_command_run_log(const char* message, struct analyze_event_data *evd)
+static void update_command_run_log(char *message, struct analyze_event_data *evd)
{
const bool it_is_a_dot = (message[0] == '.' && message[1] == '\0');
@@ -1393,12 +1393,18 @@ static void update_command_run_log(const char* message, struct analyze_event_dat
gtk_label_set_text(g_lbl_event_log, message);
/* Don't append new line behind single dot */
- g_autofree const char *log_msg = it_is_a_dot ? message : g_strdup_printf("%s\n", message);
+ char *log_msg = it_is_a_dot ? message : g_strdup_printf("%s\n", message);
append_to_textview(g_tv_event_log, log_msg);
save_to_event_log(evd, log_msg);
+
+ if (log_msg != message)
+ {
+ /* We assume message is managed by the caller. */
+ free(log_msg);
+ }
}
-static void run_event_gtk_error(const char *error_line, void *param)
+static void run_event_gtk_error(char *error_line, void *param)
{
update_command_run_log(error_line, (struct analyze_event_data *)param);
}
--
2.26.2

View File

@ -1,66 +0,0 @@
From cb2ab9a8b2e1dbc89e100aedc432c29a16246e84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Sun, 27 Sep 2020 20:45:32 +0200
Subject: [PATCH] gui-wizard-gtk: Fix a segfault and memory leak
Only `arg[1]` has to be freed in `tv_details_row_activated()`, as
`arg[0]` is allocated statically.
In `search_item_to_list_store_item()`, `tmp` gets overwritten with a new
value for every call to `gtk_text_buffer_get_text()`, so we need to free
the allocated memory continuously.
Partially reverts 7aba6e53.
Resolves rhbz#1882950
---
src/gui-wizard-gtk/wizard.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index a532c633..775b709f 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -707,7 +707,7 @@ static void tv_details_row_activated(
return;
gint exitcode;
- g_autofree gchar *arg[3];
+ gchar *arg[3];
arg[0] = (char *) "xdg-open";
arg[1] = g_build_filename(g_dump_dir_name ? g_dump_dir_name : "", item_name, NULL);
arg[2] = NULL;
@@ -751,6 +751,8 @@ static void tv_details_row_activated(
gtk_widget_destroy(scrolled);
gtk_widget_destroy(dialog);
}
+
+ g_free(arg[1]);
}
/* static gboolean tv_details_select_cursor_row(
@@ -2126,17 +2128,20 @@ static void search_item_to_list_store_item(GtkListStore *store, GtkTreeIter *new
gtk_text_iter_backward_char(end);
}
- g_autofree gchar *tmp = gtk_text_buffer_get_text(word->buffer, beg, &(word->start),
+ gchar *tmp = gtk_text_buffer_get_text(word->buffer, beg, &(word->start),
/*don't include hidden chars*/FALSE);
g_autofree gchar *prefix = g_markup_escape_text(tmp, /*NULL terminated string*/-1);
+ g_free(tmp);
tmp = gtk_text_buffer_get_text(word->buffer, &(word->start), &(word->end),
/*don't include hidden chars*/FALSE);
g_autofree gchar *text = g_markup_escape_text(tmp, /*NULL terminated string*/-1);
+ g_free(tmp);
tmp = gtk_text_buffer_get_text(word->buffer, &(word->end), end,
/*don't include hidden chars*/FALSE);
g_autofree gchar *suffix = g_markup_escape_text(tmp, /*NULL terminated string*/-1);
+ g_clear_pointer(&tmp, g_free);
char *content = g_strdup_printf("%s<span foreground=\"red\">%s</span>%s", prefix, text, suffix);
--
2.26.2

View File

@ -1,66 +0,0 @@
From 1a22f30187163ce288b14e55a80539353a38b7be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Tue, 29 Sep 2020 14:16:00 +0200
Subject: [PATCH 1/2] gui-wizard-gtk: Fix segfault
Since show_error_as_msgbox() is specified as the custom logging handler
(via setting libreport_g_custom_logger), it will get called if an error
occurs in libreport_save_user_settings(). However, at that point,
g_wnd_assistant has already been destroyed, which leads to an invalid
read in show_error_as_msgbox().
This change unsets the custom logging handler after the GUI is destroyed
and adds an assertion in show_error_as_msgbox() checking that
g_wnd_assistant is not a null pointer.
Resolves https://bugzilla.redhat.com/show_bug.cgi?id=1883337
---
src/gui-wizard-gtk/main.c | 6 ++++--
src/gui-wizard-gtk/wizard.c | 2 ++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/gui-wizard-gtk/main.c b/src/gui-wizard-gtk/main.c
index e111948c..f094c5fb 100644
--- a/src/gui-wizard-gtk/main.c
+++ b/src/gui-wizard-gtk/main.c
@@ -125,6 +125,7 @@ int main(int argc, char **argv)
/* List of events specified on the command line. */
GList *user_event_list = NULL;
const char *prgname = "abrt";
+ int ret = 0;
abrt_init(argv);
/* I18n */
@@ -217,13 +218,14 @@ int main(int argc, char **argv)
g_signal_connect(app, "startup", G_CALLBACK(startup_wizard), NULL);
/* Enter main loop */
- g_application_run(G_APPLICATION(app), argc, argv);
+ ret = g_application_run(G_APPLICATION(app), argc, argv);
g_object_unref(app);
+ libreport_g_custom_logger = NULL;
if (opts & OPT_d)
delete_dump_dir_possibly_using_abrtd(g_dump_dir_name);
libreport_save_user_settings();
- return 0;
+ return ret;
}
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 775b709f..c4a0b4c0 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -360,6 +360,8 @@ struct dump_dir *wizard_open_directory_for_writing(const char *dump_dir_name)
void show_error_as_msgbox(const char *msg)
{
+ g_return_if_fail(g_wnd_assistant != NULL);
+
GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(g_wnd_assistant),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
--
2.26.2

View File

@ -1,40 +0,0 @@
From 41b6477bdeaa82c647db2f1c2ba1132c77b365ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Tue, 29 Sep 2020 14:43:15 +0200
Subject: [PATCH 2/2] event_config: Null autofree pointers before returning
The pointers to strings in the function check_problem_rating_usability()
need to be nullified before the function returns as they are declared
for auto-cleanup.
This change fixes a double-free condition in which the returned strings
were attempted to be freed again in the caller,
is_backtrace_rating_usable().
Bug was introduced in 05e9c9273.
Resolves rhbz#1883410
---
src/lib/event_config.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lib/event_config.c b/src/lib/event_config.c
index c8053b7c..01e91efe 100644
--- a/src/lib/event_config.c
+++ b/src/lib/event_config.c
@@ -541,10 +541,10 @@ bool check_problem_rating_usability(const event_config_t *cfg,
finish:
if (description)
- *description = tmp_desc;
+ *description = g_steal_pointer(&tmp_desc);
if (detail)
- *detail = tmp_detail;
+ *detail = g_steal_pointer(&tmp_detail);
return result;
}
--
2.26.2

View File

@ -1,34 +0,0 @@
From 9b6d40905c21b476c58e9f9a908ddb32a0a56a18 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Tue, 29 Sep 2020 19:14:05 +0200
Subject: [PATCH] gui-wizard-gtk: Don't autofree URL string
g_object_set_data() does not (and cannot) copy the data passed to it, so
once url is freed, a subsequent access to the 'url' tag leads to an
invalid read and segfault.
Bug was introduced in df386b097.
Resolves rhbz#1882328
---
src/gui-wizard-gtk/wizard.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
index 0af19587..ba1998df 100644
--- a/src/gui-wizard-gtk/wizard.c
+++ b/src/gui-wizard-gtk/wizard.c
@@ -462,8 +462,8 @@ static void append_to_textview(GtkTextView *tv, const char *str)
GtkTextTag *tag;
tag = gtk_text_buffer_create_tag(tb, NULL, "foreground", "blue",
"underline", PANGO_UNDERLINE_SINGLE, NULL);
- g_autofree char *url = g_strndup(t->start, t->len);
- g_object_set_data(G_OBJECT(tag), "url", url);
+ char *url = g_strndup(t->start, t->len);
+ g_object_set_data_full(G_OBJECT(tag), "url", url, g_free);
gtk_text_buffer_insert_with_tags(tb, &text_iter, url, -1, tag, NULL);
--
2.26.2

View File

@ -1,48 +0,0 @@
From 9cdf0f9123ee39c7cb32a276371b2fd95f0df5ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Mon, 2 Nov 2020 11:45:23 +0100
Subject: [PATCH] rhbz: Fix a double-free condition
The `cc` string must not be freed after the variable goes out of scope
since it's appended to `cc_list`. (`g_list_append()` does not copy its
input.) We only need to free the last string in the loop, which is an
empty string.
The bug was introduced in 7aba6e53.
Resolves rhbz#1893595
---
src/plugins/rhbz.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
index 8a2ded79..e0d7a091 100644
--- a/src/plugins/rhbz.c
+++ b/src/plugins/rhbz.c
@@ -406,18 +406,20 @@ GList *rhbz_bug_cc(xmlrpc_value* result_xml)
if (!item)
continue;
- g_autofree const char* cc = NULL;
- xmlrpc_read_string(&env, item, &cc);
+ char *cc = NULL;
+ xmlrpc_read_string(&env, item, (const char **)&cc);
xmlrpc_DECREF(item);
if (env.fault_occurred)
abrt_xmlrpc_die(&env);
if (*cc != '\0')
{
- cc_list = g_list_append(cc_list, (char*)cc);
+ cc_list = g_list_append(cc_list, cc);
log_debug("member on cc is %s", cc);
continue;
}
+
+ free(cc);
}
xmlrpc_DECREF(cc_member);
return cc_list;
--
2.26.2

View File

@ -1,28 +0,0 @@
From cbb6b43038f0d88b28197ba905ba9324c0602945 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Grabovsk=C3=BD?= <mgrabovs@redhat.com>
Date: Thu, 3 Sep 2020 15:05:23 +0200
Subject: [PATCH] client-python: Add getter for package count to downloader
Add a new method get_package_count() to the DebugInfoDownload class
which returns the number of packages that will be downloaded.
---
src/client-python/reportclient/debuginfo.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/client-python/reportclient/debuginfo.py b/src/client-python/reportclient/debuginfo.py
index cb318e8a..eeb2be30 100644
--- a/src/client-python/reportclient/debuginfo.py
+++ b/src/client-python/reportclient/debuginfo.py
@@ -242,6 +242,9 @@ class DebugInfoDownload(object):
def get_install_size(self):
return self.installed_size
+ def get_package_count(self):
+ return len(self.package_files_dict)
+
def mute_stdout(self):
"""
Links sys.stdout with /dev/null and saves the old stdout
--
2.26.2

View File

@ -15,10 +15,14 @@
Summary: Generic library for reporting various problems
Name: libreport
Version: 2.15.2
Release: 10%{?dist}
Release: 11%{?dist}
License: GPLv2+
URL: https://abrt.readthedocs.org/
Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
# https://bugzilla.redhat.com/show_bug.cgi?id=2019402
Patch0: 0001-tests-Don-t-use-deprecated-assertEquals.patch
BuildRequires: %{dbus_devel}
BuildRequires: gtk3-devel
BuildRequires: curl-devel
@ -652,6 +656,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
%endif
%changelog
* Thu Jan 13 2022 Matěj Grabovský <mgrabovs@redhat.com> - 2.15.2-11
- Backport patch for building with Python 3.11
(https://bugzilla.redhat.com/show_bug.cgi?id=2019402)
* Wed Jan 12 2022 Matěj Grabovský <mgrabovs@redhat.com> - 2.15.2-10
- Bump for rebuild