- Add support for GPG subkeys

- Debrand for AlmaLinux
This commit is contained in:
eabdullin 2023-03-29 10:13:00 +03:00
parent 350282d528
commit 53476615ce
5 changed files with 113 additions and 191 deletions

View File

@ -1,116 +0,0 @@
From 16b6963ef5e37805d2587684f90d2c6d5dd4ffdc Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 6 Dec 2018 17:57:59 +0100
Subject: [PATCH] cli list: show a hint about creating a case in RHTS
Adds "Run 'abrt-cli report ...' for creating a case in Red Hat Customer Portal" to
abrt-cli list output.
Resolves: #1649753
(cherry-picked from 7966e5737e8d3af43b1ecdd6a823234b8d25931d)
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
configure.ac | 2 ++
src/cli/Makefile.am | 3 ++-
src/cli/list.c | 49 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 76e0f274b..5d70bb9a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -246,6 +246,7 @@ DEFAULT_PLUGINS_CONF_DIR='${datadir}/${PACKAGE_NAME}/conf.d/plugins'
EVENTS_DIR='${datadir}/libreport/events'
EVENTS_CONF_DIR='${sysconfdir}/libreport/events.d'
JOURNAL_CATALOG_DIR='$(prefix)/lib/systemd/catalog'
+WORKFLOWS_DIR='${datadir}/libreport/workflows'
ENABLE_SOCKET_OR_DBUS='-DENABLE_DBUS=1'
DEFAULT_DUMP_LOCATION_MODE=0751
DEFAULT_DUMP_DIR_MODE=$($PKG_CONFIG --variable=dd_mode libreport)
@@ -389,6 +390,7 @@ AC_SUBST(PLUGINS_CONF_DIR)
AC_SUBST(DEFAULT_PLUGINS_CONF_DIR)
AC_SUBST(EVENTS_CONF_DIR)
AC_SUBST(JOURNAL_CATALOG_DIR)
+AC_SUBST(WORKFLOWS_DIR)
AC_SUBST(EVENTS_DIR)
AC_SUBST(DEFAULT_DUMP_LOCATION)
AC_SUBST(DEFAULT_DUMP_LOCATION_MODE)
diff --git a/src/cli/Makefile.am b/src/cli/Makefile.am
index 92dc20ab4..a7c76efa3 100644
--- a/src/cli/Makefile.am
+++ b/src/cli/Makefile.am
@@ -17,7 +17,8 @@ abrt_cli_CFLAGS = \
-I$(srcdir)/../include \
-I$(srcdir)/../lib \
$(LIBREPORT_CFLAGS) \
- $(POLKIT_AGENT_CFLAGS)
+ $(POLKIT_AGENT_CFLAGS) \
+ -DWORKFLOWS_DIR=\"${WORKFLOWS_DIR}\"
if SUGGEST_AUTOREPORTING
abrt_cli_CFLAGS += -DSUGGEST_AUTOREPORTING=1
diff --git a/src/cli/list.c b/src/cli/list.c
index d069695c6..2c140cb38 100644
--- a/src/cli/list.c
+++ b/src/cli/list.c
@@ -77,6 +77,55 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz
/*names_to_skip:*/ NULL,
/*max_text_size:*/ text_size,
MAKEDESC_SHOW_ONLY_LIST | MAKEDESC_SHOW_URLS);
+
+ /*
+ * If the problem is reportable and has not yet been reported into RHTS
+ * and there is at least one applicable Workflow which contains
+ * 'report_RHTSupport' event, then append a short message informing
+ * user that he can create a new case in Red Hat Customer Portal.
+ */
+ const char *const not_reportable = problem_data_get_content_or_NULL(problem_data, FILENAME_NOT_REPORTABLE);
+ const char *const reported_to = not_reportable ? NULL : problem_data_get_content_or_NULL(problem_data, FILENAME_REPORTED_TO);
+ report_result_t *const report = !reported_to ? NULL : find_in_reported_to_data(reported_to, "RHTSupport");
+
+ if (!not_reportable && !report)
+ {
+ /* The lines below should be replaced by something simpler, I'd
+ * like to see:
+ * GHashTable *possible_worfklows = load_applicable_workflows_for_dump();
+ *
+ * However, this feature (rhbz#1055565) is intended for RHEL only
+ * and I'm not sure whether it's worth to file another bug against
+ * libreport and try to improve libreport public API.
+ */
+ const char *const dump_dir_name = problem_data_get_content_or_NULL(problem_data, CD_DUMPDIR);
+ GList *const wf_names = list_possible_events_glist(dump_dir_name, "workflow");
+ GHashTable *const possible_workflows = load_workflow_config_data_from_list(wf_names, WORKFLOWS_DIR);
+ g_list_free_full(wf_names, free);
+
+ int event_found = 0;
+
+ GHashTableIter iter;
+ gpointer key = NULL;
+ gpointer value = NULL;
+
+ g_hash_table_iter_init(&iter, possible_workflows);
+ while (!event_found && g_hash_table_iter_next(&iter, &key, &value))
+ {
+ GList *const event_names = wf_get_event_names((workflow_t *)value);
+ event_found = !!g_list_find_custom(event_names, "report_RHTSupport", (GCompareFunc)g_strcmp0);
+ g_list_free_full(event_names, free);
+ }
+
+ g_hash_table_destroy(possible_workflows);
+
+ if (event_found)
+ {
+ char *tmp = xasprintf("%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n", desc, dump_dir_name);
+ free(desc);
+ desc = tmp;
+ }
+ }
}
fputs(desc, stdout);
free(desc);
--
2.17.2

View File

@ -1,28 +0,0 @@
From c0aa44a93bfdc701839d2c70568224521a6d5c5b Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 6 Dec 2018 18:00:45 +0100
Subject: [PATCH] cli: mark the suggestion text for translation
(cherry-picked from 187530c4df6971927d1e099584be5b418ab2725b)
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/cli/list.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cli/list.c b/src/cli/list.c
index 2c140cb38..f16ce8c0d 100644
--- a/src/cli/list.c
+++ b/src/cli/list.c
@@ -121,7 +121,7 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz
if (event_found)
{
- char *tmp = xasprintf("%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n", desc, dump_dir_name);
+ char *tmp = xasprintf(_("%sRun 'abrt-cli report %s' for creating a case in Red Hat Customer Portal\n"), desc, dump_dir_name);
free(desc);
desc = tmp;
}
--
2.17.2

View File

@ -1,31 +0,0 @@
From 58dcdd2f2780263e79a82ecebb27b000b0583979 Mon Sep 17 00:00:00 2001
From: Jakub Filak <jfilak@redhat.com>
Date: Thu, 6 Dec 2018 18:01:13 +0100
Subject: [PATCH] cli: get list of possible workflows for problem_data_t
File system access is not possible, so we have to rely on the data
transfered via D-Bus.
(cherry-picked from f2055f8c6469b590172d94e9ea530243af89f028)
Signed-off-by: Jakub Filak <jfilak@redhat.com>
---
src/cli/list.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cli/list.c b/src/cli/list.c
index f16ce8c0d..e688d2f49 100644
--- a/src/cli/list.c
+++ b/src/cli/list.c
@@ -99,7 +99,7 @@ static void print_crash(problem_data_t *problem_data, int detailed, int text_siz
* libreport and try to improve libreport public API.
*/
const char *const dump_dir_name = problem_data_get_content_or_NULL(problem_data, CD_DUMPDIR);
- GList *const wf_names = list_possible_events_glist(dump_dir_name, "workflow");
+ GList *const wf_names = list_possible_events_problem_data_glist(problem_data, dump_dir_name, "workflow");
GHashTable *const possible_workflows = load_workflow_config_data_from_list(wf_names, WORKFLOWS_DIR);
g_list_free_full(wf_names, free);
--
2.17.2

View File

@ -0,0 +1,88 @@
From 0f61c017f2d0c8a11b12abec774aa94d45ec8116 Mon Sep 17 00:00:00 2001
From: Daniil Leonov <dleonov@cloudlinux.com>
Date: Tue, 9 Feb 2021 15:17:59 +0300
Subject: [PATCH] Add GPG subkeys support.
---
src/daemon/rpm.c | 46 ++++++++++++++++++++++++++++++++++++++--------
1 file changed, 38 insertions(+), 8 deletions(-)
diff --git a/src/daemon/rpm.c b/src/daemon/rpm.c
index af9a7be..c28c047 100644
--- a/src/daemon/rpm.c
+++ b/src/daemon/rpm.c
@@ -24,6 +24,19 @@
#include <rpm/rpmcli.h>
#include <rpm/rpmdb.h>
#include <rpm/rpmpgp.h>
+#include <rpm/rpmkeyring.h>
+
+struct rpmPubkey_s {
+ uint8_t *pkt;
+ size_t pktlen;
+ pgpKeyID_t keyid;
+ pgpDigParams pgpkey;
+ int nrefs;
+ pthread_rwlock_t lock;
+};
+
+typedef struct rpmPubkey_s * rpmPubkey;
+
#endif
/**
@@ -93,8 +106,13 @@ void rpm_destroy()
void rpm_load_gpgkey(const char* filename)
{
#ifdef HAVE_LIBRPM
+ rpmPubkey pubkey = NULL;
+ rpmPubkey *subkeys = NULL;
+ char *fingerprint = NULL;
+ int subkeysCount = 0;
uint8_t *pkt = NULL;
- size_t pklen;
+ size_t pklen = 0;
+
if (pgpReadPkts(filename, &pkt, &pklen) != PGPARMOR_PUBKEY)
{
free(pkt);
@@ -102,17 +120,29 @@ void rpm_load_gpgkey(const char* filename)
return;
}
- uint8_t keyID[8];
-#if 0
- if (pgpPubkeyFingerprint(pkt, pklen, keyID) == 0)
-#else
- if (pgpPubkeyKeyID(pkt, pklen, keyID) == 0)
-#endif
+ pubkey = rpmPubkeyNew(pkt, pklen);
+ if (pubkey != NULL)
{
- char *fingerprint = pgpHexStr(keyID, sizeof(keyID));
+ fingerprint = pgpHexStr(pubkey->keyid, sizeof(pubkey->keyid));
if (fingerprint != NULL)
list_fingerprints = g_list_append(list_fingerprints, fingerprint);
+
+ subkeys = rpmGetSubkeys(pubkey, &subkeysCount);
+ for (int i = 0; i < subkeysCount; i++)
+ {
+ rpmPubkey subkey = subkeys[i];
+ if (subkey != NULL)
+ {
+ fingerprint = pgpHexStr(subkey->keyid, sizeof(subkey->keyid));
+ if (fingerprint != NULL)
+ list_fingerprints = g_list_append(list_fingerprints, fingerprint);
+ }
+ rpmPubkeyFree(subkey);
+ }
+ free(subkeys);
}
+
+ rpmPubkeyFree(pubkey);
free(pkt);
#else
return;
--
2.25.1

View File

@ -55,7 +55,7 @@
Summary: Automatic bug detection and reporting tool
Name: abrt
Version: 2.10.9
Release: 24%{?dist}
Release: 24%{?dist}.alma
License: GPLv2+
URL: https://abrt.readthedocs.org/
Source: https://github.com/abrt/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
@ -88,9 +88,9 @@ Patch0009: 0009-lib-Correct-the-syntax-for-gdb-backtrace-command.patch
Patch0024: 0024-dbus-Add-configuration-for-Python3.patch
Patch0025: 0025-daemon-Fix-double-closed-fd-race-condition.patch
#git format-patch 1725bd258 -N --start-number 26 --topo-order
Patch0026: 0026-cli-list-show-a-hint-about-creating-a-case-in-RHTS.patch
Patch0027: 0027-cli-mark-the-suggestion-text-for-translation.patch
Patch0028: 0028-cli-get-list-of-possible-workflows-for-problem_data_.patch
# Patch0026: 0026-cli-list-show-a-hint-about-creating-a-case-in-RHTS.patch
# Patch0027: 0027-cli-mark-the-suggestion-text-for-translation.patch
# Patch0028: 0028-cli-get-list-of-possible-workflows-for-problem_data_.patch
#Patch0029: 0029-spec-Add-explicit-package-version-requirement-of-abr.patch
#git format-patch 2.10.9-10.el8 -N --start-number 30 --topo-order
#Patch030: 0030-testsuite-dbus-element-handling-Use-external-script.patch
@ -166,6 +166,10 @@ Patch0092: 0092-abrt-dump-oops-Fix-vmcore-call-trace-parsing.patch
# autogen.sh is need to regenerate all the Makefile files
Patch1000: 1000-Add-autogen.sh.patch
# AlmaLinux: add support for GPG subkeys
Patch9100: 9100-add_gpg_subkeys_support.patch
BuildRequires: %{dbus_devel}
BuildRequires: gtk3-devel
BuildRequires: glib2-devel >= 2.43
@ -227,9 +231,9 @@ Requires: python3-dbus
Requires: dmidecode
%endif
Requires: libreport-plugin-ureport
%if 0%{?rhel}
Requires: libreport-plugin-rhtsupport
%endif
# %if 0%{?rhel}
# Requires: libreport-plugin-rhtsupport
# %endif
%if 0%{?fedora}
Requires: libreport-plugin-systemd-journal
%endif
@ -538,10 +542,11 @@ Requires: python2-abrt-addon
Requires: python3-abrt-addon
%endif # with python3
Requires: abrt-addon-xorg
%if 0%{?rhel}
Requires: libreport-rhel >= %{libreport_ver}
Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
%else
# %if 0%{?rhel}
# Requires: libreport-rhel >= %{libreport_ver}
# Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
# %else
%if 0%{!?rhel}
Requires: abrt-retrace-client
%if %{with bodhi}
Requires: abrt-plugin-bodhi
@ -582,10 +587,11 @@ Requires: abrt-addon-xorg
Requires: gdb-headless
Requires: abrt-gui
Requires: gnome-abrt
%if 0%{?rhel}
Requires: libreport-rhel >= %{libreport_ver}
Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
%else
# %if 0%{?rhel}
# Requires: libreport-rhel >= %{libreport_ver}
# Requires: libreport-plugin-rhtsupport >= %{libreport_ver}
# %else
%if 0%{!?rhel}
Requires: abrt-retrace-client
%if %{with bodhi}
Requires: abrt-plugin-bodhi
@ -735,7 +741,6 @@ CFLAGS="%{optflags} -Werror" %configure \
%endif
%if 0%{?rhel}
--enable-suggest-autoreporting \
--enable-authenticated-autoreporting \
%endif
%ifnarch %{arm}
--enable-native-unwinder \
@ -1380,6 +1385,10 @@ killall abrt-dbus >/dev/null 2>&1 || :
%config(noreplace) %{_sysconfdir}/profile.d/abrt-console-notification.sh
%changelog
* Wed Mar 29 2023 Eduard Abdullin <eabdullin@almalinux.org> - 2.10.9-24.alma
- Add support for GPG subkeys
- Debrand for AlmaLinux
* Thu Feb 16 2023 Matěj Grabovský <mgrabovs@redhat.com> - 2.10.9-24
- Revert part of patch for rhbz#2137499
- Resolves: rhbz#2137499