|
|
5f74b5e |
From 16468b57579997971c056687ecc8438a406d57c2 Mon Sep 17 00:00:00 2001
|
|
|
5f74b5e |
From: Ernestas Kulik <ekulik@redhat.com>
|
|
|
5f74b5e |
Date: Tue, 14 Jan 2020 16:36:21 +0100
|
|
|
5f74b5e |
Subject: [PATCH] Use GChecksum to compute checksums
|
|
|
5f74b5e |
MIME-Version: 1.0
|
|
|
5f74b5e |
Content-Type: text/plain; charset=UTF-8
|
|
|
5f74b5e |
Content-Transfer-Encoding: 8bit
|
|
|
5f74b5e |
|
|
|
5f74b5e |
d605ffeaa6ae411ef396160ffd67b7a6fd27c6ba in libreport removed some
|
|
|
5f74b5e |
convenience API for hashing data, so let’s just go with what GLib has in
|
|
|
5f74b5e |
store.
|
|
|
5f74b5e |
---
|
|
|
5f74b5e |
src/dbus/abrt_problems2_service.c | 33 +++++++++++----------
|
|
|
5f74b5e |
src/plugins/abrt-action-analyze-backtrace.c | 8 +++--
|
|
|
5f74b5e |
src/plugins/abrt-action-analyze-c.c | 7 +++--
|
|
|
5f74b5e |
src/plugins/abrt-action-analyze-python.c | 9 +++---
|
|
|
5f74b5e |
4 files changed, 32 insertions(+), 25 deletions(-)
|
|
|
5f74b5e |
|
|
|
5f74b5e |
diff --git a/src/dbus/abrt_problems2_service.c b/src/dbus/abrt_problems2_service.c
|
|
|
5f74b5e |
index 2511136f..a0d2a3ce 100644
|
|
|
5f74b5e |
--- a/src/dbus/abrt_problems2_service.c
|
|
|
5f74b5e |
+++ b/src/dbus/abrt_problems2_service.c
|
|
|
5f74b5e |
@@ -572,9 +572,11 @@ static AbrtP2Object *session_object_register(AbrtP2Service *service,
|
|
|
5f74b5e |
|
|
|
5f74b5e |
static char *session_object_caller_to_path(const char *caller)
|
|
|
5f74b5e |
{
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- str_to_sha1str(hash_str, caller);
|
|
|
5f74b5e |
- return xasprintf(ABRT_P2_PATH"/Session/%s", hash_str);
|
|
|
5f74b5e |
+ g_autofree char *checksum = NULL;
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA1, caller, -1);
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ return xasprintf(ABRT_P2_PATH"/Session/%s", checksum);
|
|
|
5f74b5e |
}
|
|
|
5f74b5e |
|
|
|
5f74b5e |
static AbrtP2Object *abrt_p2_service_get_session_for_caller(
|
|
|
5f74b5e |
@@ -1323,9 +1325,11 @@ static void entry_object_destructor(AbrtP2Object *obj)
|
|
|
5f74b5e |
|
|
|
5f74b5e |
static char *entry_object_dir_name_to_path(const char *dd_dirname)
|
|
|
5f74b5e |
{
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- str_to_sha1str(hash_str, dd_dirname);
|
|
|
5f74b5e |
- return xasprintf(ABRT_P2_PATH"/Entry/%s", hash_str);
|
|
|
5f74b5e |
+ g_autofree char *checksum = NULL;
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA1, dd_dirname, -1);
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ return xasprintf(ABRT_P2_PATH"/Entry/%s", checksum);
|
|
|
5f74b5e |
}
|
|
|
5f74b5e |
|
|
|
5f74b5e |
static AbrtP2Object *entry_object_register_dump_dir(AbrtP2Service *service,
|
|
|
5f74b5e |
@@ -1480,8 +1484,10 @@ char *abrt_p2_service_save_problem( AbrtP2Service *service,
|
|
|
5f74b5e |
else
|
|
|
5f74b5e |
{
|
|
|
5f74b5e |
/* start hash */
|
|
|
5f74b5e |
- sha1_ctx_t sha1ctx;
|
|
|
5f74b5e |
- sha1_begin(&sha1ctx);
|
|
|
5f74b5e |
+ g_autoptr(GChecksum) checksum = NULL;
|
|
|
5f74b5e |
+ const char *digest;
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ checksum = g_checksum_new(G_CHECKSUM_SHA1);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
/*
|
|
|
5f74b5e |
* To avoid spurious hash differences, sort keys so that elements are
|
|
|
5f74b5e |
@@ -1500,19 +1506,16 @@ char *abrt_p2_service_save_problem( AbrtP2Service *service,
|
|
|
5f74b5e |
|
|
|
5f74b5e |
gsize size = 0;
|
|
|
5f74b5e |
const char *content = g_variant_get_string(element, &size);
|
|
|
5f74b5e |
- sha1_hash(&sha1ctx, content, size);
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ g_checksum_update(checksum, (const unsigned char *)content, size);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
g_variant_unref(element);
|
|
|
5f74b5e |
}
|
|
|
5f74b5e |
g_list_free_full(list, free);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- /* end hash */
|
|
|
5f74b5e |
- char hash_bytes[SHA1_RESULT_LEN];
|
|
|
5f74b5e |
- sha1_end(&sha1ctx, hash_bytes);
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
|
|
|
5f74b5e |
+ digest = g_checksum_get_string(checksum);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- g_variant_dict_insert(&pd, FILENAME_UUID, "s", hash_str);
|
|
|
5f74b5e |
+ g_variant_dict_insert(&pd, FILENAME_UUID, "s", digest);
|
|
|
5f74b5e |
}
|
|
|
5f74b5e |
}
|
|
|
5f74b5e |
|
|
|
5f74b5e |
diff --git a/src/plugins/abrt-action-analyze-backtrace.c b/src/plugins/abrt-action-analyze-backtrace.c
|
|
|
5f74b5e |
index 622d7953..20e71945 100644
|
|
|
5f74b5e |
--- a/src/plugins/abrt-action-analyze-backtrace.c
|
|
|
5f74b5e |
+++ b/src/plugins/abrt-action-analyze-backtrace.c
|
|
|
5f74b5e |
@@ -82,6 +82,8 @@ int main(int argc, char **argv)
|
|
|
5f74b5e |
/* Store backtrace hash */
|
|
|
5f74b5e |
if (!backtrace)
|
|
|
5f74b5e |
{
|
|
|
5f74b5e |
+ g_autofree char *checksum = NULL;
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
/*
|
|
|
5f74b5e |
* The parser failed. Compute the duphash from the executable
|
|
|
5f74b5e |
* instead of a backtrace.
|
|
|
5f74b5e |
@@ -98,10 +100,10 @@ int main(int argc, char **argv)
|
|
|
5f74b5e |
strbuf_prepend_str(emptybt, component);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
log_debug("Generating duphash: %s", emptybt->buf);
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- str_to_sha1str(hash_str, emptybt->buf);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- dd_save_text(dd, FILENAME_DUPHASH, hash_str);
|
|
|
5f74b5e |
+ checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA1, emptybt->buf, -1);
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ dd_save_text(dd, FILENAME_DUPHASH, checksum);
|
|
|
5f74b5e |
/*
|
|
|
5f74b5e |
* Other parts of ABRT assume that if no rating is available,
|
|
|
5f74b5e |
* it is ok to allow reporting of the bug. To be sure no bad
|
|
|
5f74b5e |
diff --git a/src/plugins/abrt-action-analyze-c.c b/src/plugins/abrt-action-analyze-c.c
|
|
|
5f74b5e |
index 08e48779..4a6d34d4 100644
|
|
|
5f74b5e |
--- a/src/plugins/abrt-action-analyze-c.c
|
|
|
5f74b5e |
+++ b/src/plugins/abrt-action-analyze-c.c
|
|
|
5f74b5e |
@@ -235,10 +235,11 @@ int main(int argc, char **argv)
|
|
|
5f74b5e |
|
|
|
5f74b5e |
log_debug("String to hash: %s", string_to_hash);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- str_to_sha1str(hash_str, string_to_hash);
|
|
|
5f74b5e |
+ g_autofree char *checksum = NULL;
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- dd_save_text(dd, FILENAME_UUID, hash_str);
|
|
|
5f74b5e |
+ checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA1, string_to_hash, -1);
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
+ dd_save_text(dd, FILENAME_UUID, checksum);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
/* Create crash_function element from core_backtrace */
|
|
|
5f74b5e |
char *core_backtrace_json = dd_load_text_ext(dd, FILENAME_CORE_BACKTRACE,
|
|
|
5f74b5e |
diff --git a/src/plugins/abrt-action-analyze-python.c b/src/plugins/abrt-action-analyze-python.c
|
|
|
5f74b5e |
index 0dd55750..10589cbb 100644
|
|
|
5f74b5e |
--- a/src/plugins/abrt-action-analyze-python.c
|
|
|
5f74b5e |
+++ b/src/plugins/abrt-action-analyze-python.c
|
|
|
5f74b5e |
@@ -26,6 +26,8 @@
|
|
|
5f74b5e |
|
|
|
5f74b5e |
int main(int argc, char **argv)
|
|
|
5f74b5e |
{
|
|
|
5f74b5e |
+ g_autofree char *checksum = NULL;
|
|
|
5f74b5e |
+
|
|
|
5f74b5e |
/* I18n */
|
|
|
5f74b5e |
setlocale(LC_ALL, "");
|
|
|
5f74b5e |
#if ENABLE_NLS
|
|
|
5f74b5e |
@@ -91,13 +93,12 @@ int main(int argc, char **argv)
|
|
|
5f74b5e |
|
|
|
5f74b5e |
char *bt_end = strchrnul(bt, '\n');
|
|
|
5f74b5e |
*bt_end = '\0';
|
|
|
5f74b5e |
- char hash_str[SHA1_RESULT_LEN*2 + 1];
|
|
|
5f74b5e |
- str_to_sha1str(hash_str, bt);
|
|
|
5f74b5e |
+ checksum = g_compute_checksum_for_string(G_CHECKSUM_SHA1, bt, -1);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
free(bt);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
- dd_save_text(dd, FILENAME_UUID, hash_str);
|
|
|
5f74b5e |
- dd_save_text(dd, FILENAME_DUPHASH, hash_str);
|
|
|
5f74b5e |
+ dd_save_text(dd, FILENAME_UUID, checksum);
|
|
|
5f74b5e |
+ dd_save_text(dd, FILENAME_DUPHASH, checksum);
|
|
|
5f74b5e |
dd_close(dd);
|
|
|
5f74b5e |
|
|
|
5f74b5e |
return 0;
|
|
|
5f74b5e |
--
|
|
|
5f74b5e |
2.25.0
|
|
|
5f74b5e |
|