please review
M.
From 464ddd25f601c12e4c41057d81d7880100bf9287 Mon Sep 17 00:00:00 2001
From: Michal Toman <[email protected]>
Date: Wed, 6 Jun 2012 16:34:41 +0200
Subject: [PATCH] a-a-g-c-b: hash fingerprints by default
---
src/plugins/abrt-action-generate-core-backtrace.c | 30 +++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/plugins/abrt-action-generate-core-backtrace.c
b/src/plugins/abrt-action-generate-core-backtrace.c
index a21da0a..5f4f3c6 100644
--- a/src/plugins/abrt-action-generate-core-backtrace.c
+++ b/src/plugins/abrt-action-generate-core-backtrace.c
@@ -17,11 +17,37 @@
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "libabrt.h"
+#include <btparser/hash_sha1.h>
#include <btparser/utils.h>
#include <btparser/core-backtrace.h>
#include <btparser/core-backtrace-python.h>
#include <btparser/core-backtrace-oops.h>
+static bool raw_fingerprints = false;
+
+static void hash_fingerprints(GList *backtrace)
+{
+ GList *elem = backtrace;
+ struct backtrace_entry *entry;
+ char bin_hash[BTP_SHA1_RESULT_BIN_LEN], hash[BTP_SHA1_RESULT_LEN];
+ btp_sha1_ctx_t ctx;
+ while (elem)
+ {
+ entry = (struct backtrace_entry *)elem->data;
+ if (entry->fingerprint)
+ {
+ btp_sha1_begin(&ctx);
+ btp_sha1_hash(&ctx, entry->fingerprint,
strlen(entry->fingerprint));
+ btp_sha1_end(&ctx, bin_hash);
+ btp_bin2hex(hash, bin_hash, BTP_SHA1_RESULT_BIN_LEN)[0] = '\0';
+
+ free(entry->fingerprint);
+ entry->fingerprint = btp_strdup(hash);
+ }
+ elem = g_list_next(elem);
+ }
+}
+
int main(int argc, char **argv)
{
/* I18n */
@@ -46,11 +72,13 @@ int main(int argc, char **argv)
enum {
OPT_v = 1 << 0,
OPT_d = 1 << 1,
+ OPT_r = 1 << 2,
};
/* Keep enum above and order of options below in sync! */
struct options program_options[] = {
OPT__VERBOSE(&g_verbose),
OPT_STRING('d', NULL, &dump_dir_name, "DIR", _("Problem directory")),
+ OPT_BOOL('r', "raw", &raw_fingerprints, _("Do not hash fingerprints")),
OPT_END()
};
/*unsigned opts =*/ parse_opts(argc, argv, program_options,
program_usage_string);
@@ -110,6 +138,8 @@ int main(int argc, char **argv)
/* Extract address ranges from all the executables in the backtrace*/
VERB1 log("Computing function fingerprints");
btp_core_backtrace_fingerprint(backtrace);
+ if (!raw_fingerprints)
+ hash_fingerprints(backtrace);
}
else if (strcmp(analyzer, "Python") == 0)
backtrace = btp_parse_python_backtrace(txt_backtrace);
--
1.7.10.2