Denys Vlasenko
2013-09-10 12:27:30 UTC
Signed-off-by: Denys Vlasenko <dvlasenk-H+wXaHxf7aLQT0dZR+***@public.gmane.org>
---
src/cli/abrt-cli-core.c | 18 +++---------------
src/cli/abrt-cli-core.h | 1 -
src/cli/list.c | 3 ++-
src/lib/kernel.c | 8 +-------
src/plugins/abrt-action-analyze-backtrace.c | 14 +-------------
src/plugins/abrt-action-analyze-c.c | 14 +-------------
src/plugins/abrt-action-analyze-python.c | 13 ++++---------
7 files changed, 12 insertions(+), 59 deletions(-)
diff --git a/src/cli/abrt-cli-core.c b/src/cli/abrt-cli-core.c
index 89bd04a..23a74a8 100644
--- a/src/cli/abrt-cli-core.c
+++ b/src/cli/abrt-cli-core.c
@@ -74,19 +74,6 @@ static bool isxdigit_str(const char *str)
return true;
}
-const char *str2hash(const char *str)
-{
- static char result[SHA1_RESULT_LEN*2 + 1];
-
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, str, strlen(str));
- sha1_end(&sha1ctx, hash_bytes);
- bin2hex(result, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- return result;
-}
-
struct name_resolution_param {
const char *shortcut;
unsigned strlen_shortcut;
@@ -96,8 +83,9 @@ struct name_resolution_param {
static int find_dir_by_hash(struct dump_dir *dd, void *arg)
{
struct name_resolution_param *param = arg;
- const char *h = str2hash(dd->dd_dirname);
- if (strncasecmp(param->shortcut, h, param->strlen_shortcut) == 0)
+ char hash_str[SHA1_RESULT_LEN*2 + 1];
+ str_to_sha1str(hash_str, dd->dd_dirname);
+ if (strncasecmp(param->shortcut, hash_str, param->strlen_shortcut) == 0)
{
if (param->found_name)
error_msg_and_die(_("'%s' identifies more than one problem directory"), param->shortcut);
diff --git a/src/cli/abrt-cli-core.h b/src/cli/abrt-cli-core.h
index 2e5dfe5..83d0b5d 100644
--- a/src/cli/abrt-cli-core.h
+++ b/src/cli/abrt-cli-core.h
@@ -30,7 +30,6 @@ void free_vector_of_problem_data(vector_of_problem_data_t *vector);
vector_of_problem_data_t *new_vector_of_problem_data(void);
vector_of_problem_data_t *fetch_crash_infos(GList *dir_list);
-const char *str2hash(const char *str);
/* Returns malloced string, or NULL if not found: */
char *hash2dirname(const char *hash);
diff --git a/src/cli/list.c b/src/cli/list.c
index c6bc895..a7209ed 100644
--- a/src/cli/list.c
+++ b/src/cli/list.c
@@ -110,9 +110,10 @@ static void print_crash_list(vector_of_problem_data_t *crash_list, int detailed,
continue;
}
+ char hash_str[SHA1_RESULT_LEN*2 + 1];
struct problem_item *item = g_hash_table_lookup(crash, CD_DUMPDIR);
if (item)
- printf("@%s\n", str2hash(item->content));
+ printf("@%s\n", str_to_sha1str(hash_str, item->content));
print_crash(crash, detailed, text_size);
if (i != crash_list->len - 1)
printf("\n");
diff --git a/src/lib/kernel.c b/src/lib/kernel.c
index dd2383b..54bf048 100644
--- a/src/lib/kernel.c
+++ b/src/lib/kernel.c
@@ -517,14 +517,8 @@ int koops_hash_str(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *oops_buf)
*/
int bad = (kernel_bt->len == 0);
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, kernel_bt->buf, kernel_bt->len);
- sha1_end(&sha1ctx, hash_bytes);
+ str_to_sha1str(hash_str, kernel_bt->buf);
strbuf_free(kernel_bt);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
VERB3 log("hash: %s", hash_str);
return bad;
diff --git a/src/plugins/abrt-action-analyze-backtrace.c b/src/plugins/abrt-action-analyze-backtrace.c
index 9348195..99055cf 100644
--- a/src/plugins/abrt-action-analyze-backtrace.c
+++ b/src/plugins/abrt-action-analyze-backtrace.c
@@ -25,18 +25,6 @@
static const char *dump_dir_name = ".";
-static void create_hash(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *pInput)
-{
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, pInput, strlen(pInput));
- sha1_end(&sha1ctx, hash_bytes);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- //log("hash:%s str:'%s'", hash_str, pInput);
-}
-
int main(int argc, char **argv)
{
/* I18n */
@@ -111,7 +99,7 @@ int main(int argc, char **argv)
VERB3 log("Generating duphash: %s", emptybt->buf);
char hash_str[SHA1_RESULT_LEN*2 + 1];
- create_hash(hash_str, emptybt->buf);
+ str_to_sha1str(hash_str, emptybt->buf);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
/*
diff --git a/src/plugins/abrt-action-analyze-c.c b/src/plugins/abrt-action-analyze-c.c
index cb2bd78..a53f4fb 100644
--- a/src/plugins/abrt-action-analyze-c.c
+++ b/src/plugins/abrt-action-analyze-c.c
@@ -18,18 +18,6 @@
*/
#include "libabrt.h"
-static void create_hash(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *pInput)
-{
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, pInput, strlen(pInput));
- sha1_end(&sha1ctx, hash_bytes);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- //log("hash:%s str:'%s'", hash_str, pInput);
-}
-
static void trim_unstrip_output(char *result, const char *unstrip_n_output)
{
// lines look like this:
@@ -144,7 +132,7 @@ int main(int argc, char **argv)
/*free(unstrip_n_output);*/
char hash_str[SHA1_RESULT_LEN*2 + 1];
- create_hash(hash_str, string_to_hash);
+ str_to_sha1str(hash_str, string_to_hash);
dd_save_text(dd, FILENAME_UUID, hash_str);
dd_close(dd);
diff --git a/src/plugins/abrt-action-analyze-python.c b/src/plugins/abrt-action-analyze-python.c
index f9b2105..b7ad1a6 100644
--- a/src/plugins/abrt-action-analyze-python.c
+++ b/src/plugins/abrt-action-analyze-python.c
@@ -59,16 +59,11 @@ int main(int argc, char **argv)
/* Hash 1st line of backtrace and save it as UUID and DUPHASH */
/* "example.py:1:<module>:ZeroDivisionError: integer division or modulo by zero" */
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- const char *bt_end = strchrnul(bt, '\n');
- sha1_hash(&sha1ctx, bt, bt_end - bt);
- sha1_end(&sha1ctx, hash_bytes);
- free(bt);
-
+ char *bt_end = strchrnul(bt, '\n');
+ *bt_end = '\0';
char hash_str[SHA1_RESULT_LEN*2 + 1];
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
+ str_to_sha1str(hash_str, bt);
+ free(bt);
dd_save_text(dd, FILENAME_UUID, hash_str);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
---
src/cli/abrt-cli-core.c | 18 +++---------------
src/cli/abrt-cli-core.h | 1 -
src/cli/list.c | 3 ++-
src/lib/kernel.c | 8 +-------
src/plugins/abrt-action-analyze-backtrace.c | 14 +-------------
src/plugins/abrt-action-analyze-c.c | 14 +-------------
src/plugins/abrt-action-analyze-python.c | 13 ++++---------
7 files changed, 12 insertions(+), 59 deletions(-)
diff --git a/src/cli/abrt-cli-core.c b/src/cli/abrt-cli-core.c
index 89bd04a..23a74a8 100644
--- a/src/cli/abrt-cli-core.c
+++ b/src/cli/abrt-cli-core.c
@@ -74,19 +74,6 @@ static bool isxdigit_str(const char *str)
return true;
}
-const char *str2hash(const char *str)
-{
- static char result[SHA1_RESULT_LEN*2 + 1];
-
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, str, strlen(str));
- sha1_end(&sha1ctx, hash_bytes);
- bin2hex(result, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- return result;
-}
-
struct name_resolution_param {
const char *shortcut;
unsigned strlen_shortcut;
@@ -96,8 +83,9 @@ struct name_resolution_param {
static int find_dir_by_hash(struct dump_dir *dd, void *arg)
{
struct name_resolution_param *param = arg;
- const char *h = str2hash(dd->dd_dirname);
- if (strncasecmp(param->shortcut, h, param->strlen_shortcut) == 0)
+ char hash_str[SHA1_RESULT_LEN*2 + 1];
+ str_to_sha1str(hash_str, dd->dd_dirname);
+ if (strncasecmp(param->shortcut, hash_str, param->strlen_shortcut) == 0)
{
if (param->found_name)
error_msg_and_die(_("'%s' identifies more than one problem directory"), param->shortcut);
diff --git a/src/cli/abrt-cli-core.h b/src/cli/abrt-cli-core.h
index 2e5dfe5..83d0b5d 100644
--- a/src/cli/abrt-cli-core.h
+++ b/src/cli/abrt-cli-core.h
@@ -30,7 +30,6 @@ void free_vector_of_problem_data(vector_of_problem_data_t *vector);
vector_of_problem_data_t *new_vector_of_problem_data(void);
vector_of_problem_data_t *fetch_crash_infos(GList *dir_list);
-const char *str2hash(const char *str);
/* Returns malloced string, or NULL if not found: */
char *hash2dirname(const char *hash);
diff --git a/src/cli/list.c b/src/cli/list.c
index c6bc895..a7209ed 100644
--- a/src/cli/list.c
+++ b/src/cli/list.c
@@ -110,9 +110,10 @@ static void print_crash_list(vector_of_problem_data_t *crash_list, int detailed,
continue;
}
+ char hash_str[SHA1_RESULT_LEN*2 + 1];
struct problem_item *item = g_hash_table_lookup(crash, CD_DUMPDIR);
if (item)
- printf("@%s\n", str2hash(item->content));
+ printf("@%s\n", str_to_sha1str(hash_str, item->content));
print_crash(crash, detailed, text_size);
if (i != crash_list->len - 1)
printf("\n");
diff --git a/src/lib/kernel.c b/src/lib/kernel.c
index dd2383b..54bf048 100644
--- a/src/lib/kernel.c
+++ b/src/lib/kernel.c
@@ -517,14 +517,8 @@ int koops_hash_str(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *oops_buf)
*/
int bad = (kernel_bt->len == 0);
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, kernel_bt->buf, kernel_bt->len);
- sha1_end(&sha1ctx, hash_bytes);
+ str_to_sha1str(hash_str, kernel_bt->buf);
strbuf_free(kernel_bt);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
VERB3 log("hash: %s", hash_str);
return bad;
diff --git a/src/plugins/abrt-action-analyze-backtrace.c b/src/plugins/abrt-action-analyze-backtrace.c
index 9348195..99055cf 100644
--- a/src/plugins/abrt-action-analyze-backtrace.c
+++ b/src/plugins/abrt-action-analyze-backtrace.c
@@ -25,18 +25,6 @@
static const char *dump_dir_name = ".";
-static void create_hash(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *pInput)
-{
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, pInput, strlen(pInput));
- sha1_end(&sha1ctx, hash_bytes);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- //log("hash:%s str:'%s'", hash_str, pInput);
-}
-
int main(int argc, char **argv)
{
/* I18n */
@@ -111,7 +99,7 @@ int main(int argc, char **argv)
VERB3 log("Generating duphash: %s", emptybt->buf);
char hash_str[SHA1_RESULT_LEN*2 + 1];
- create_hash(hash_str, emptybt->buf);
+ str_to_sha1str(hash_str, emptybt->buf);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
/*
diff --git a/src/plugins/abrt-action-analyze-c.c b/src/plugins/abrt-action-analyze-c.c
index cb2bd78..a53f4fb 100644
--- a/src/plugins/abrt-action-analyze-c.c
+++ b/src/plugins/abrt-action-analyze-c.c
@@ -18,18 +18,6 @@
*/
#include "libabrt.h"
-static void create_hash(char hash_str[SHA1_RESULT_LEN*2 + 1], const char *pInput)
-{
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- sha1_hash(&sha1ctx, pInput, strlen(pInput));
- sha1_end(&sha1ctx, hash_bytes);
-
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
- //log("hash:%s str:'%s'", hash_str, pInput);
-}
-
static void trim_unstrip_output(char *result, const char *unstrip_n_output)
{
// lines look like this:
@@ -144,7 +132,7 @@ int main(int argc, char **argv)
/*free(unstrip_n_output);*/
char hash_str[SHA1_RESULT_LEN*2 + 1];
- create_hash(hash_str, string_to_hash);
+ str_to_sha1str(hash_str, string_to_hash);
dd_save_text(dd, FILENAME_UUID, hash_str);
dd_close(dd);
diff --git a/src/plugins/abrt-action-analyze-python.c b/src/plugins/abrt-action-analyze-python.c
index f9b2105..b7ad1a6 100644
--- a/src/plugins/abrt-action-analyze-python.c
+++ b/src/plugins/abrt-action-analyze-python.c
@@ -59,16 +59,11 @@ int main(int argc, char **argv)
/* Hash 1st line of backtrace and save it as UUID and DUPHASH */
/* "example.py:1:<module>:ZeroDivisionError: integer division or modulo by zero" */
- char hash_bytes[SHA1_RESULT_LEN];
- sha1_ctx_t sha1ctx;
- sha1_begin(&sha1ctx);
- const char *bt_end = strchrnul(bt, '\n');
- sha1_hash(&sha1ctx, bt, bt_end - bt);
- sha1_end(&sha1ctx, hash_bytes);
- free(bt);
-
+ char *bt_end = strchrnul(bt, '\n');
+ *bt_end = '\0';
char hash_str[SHA1_RESULT_LEN*2 + 1];
- bin2hex(hash_str, hash_bytes, SHA1_RESULT_LEN)[0] = '\0';
+ str_to_sha1str(hash_str, bt);
+ free(bt);
dd_save_text(dd, FILENAME_UUID, hash_str);
dd_save_text(dd, FILENAME_DUPHASH, hash_str);
--
1.8.1.4
1.8.1.4