[SATYR PATCH] Fix fingerprint incompatibility with btparser

Martin Milata mmilata at redhat.com
Tue May 14 13:10:03 UTC 2013


The libcalls and calltree_leaves fingerprint components were not sorted
before hashing, due to me not being able to use qsort properly ...

Signed-off-by: Martin Milata <mmilata at redhat.com>
---
 lib/core_fingerprint.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/core_fingerprint.c b/lib/core_fingerprint.c
index ddf2a4d..d153f8b 100644
--- a/lib/core_fingerprint.c
+++ b/lib/core_fingerprint.c
@@ -30,6 +30,7 @@
 #include <ctype.h>
 #include <string.h>
 #include <stdio.h>
+#include <stdlib.h>
 
 static void
 fingerprint_add_bool(struct sr_strbuf *buffer,
@@ -279,9 +280,9 @@ get_libcalls(char ***symbol_list,
 }
 
 static int
-strcmp_reverse(const char *s1, const char *s2)
+strcmp_wrapper(const char **s1, const char **s2)
 {
-    return -strcmp(s1, s2);
+    return strcmp(*s1, *s2);
 }
 
 static bool
@@ -308,7 +309,7 @@ fp_libcalls(struct sr_strbuf *fingerprint,
         return false;
 
     qsort(symbol_list, symbol_list_size,
-          sizeof(char*), (comparison_fn_t)strcmp_reverse);
+          sizeof(char*), (comparison_fn_t)strcmp_wrapper);
 
     /* Make it unique. */
     sr_struniq(symbol_list, &symbol_list_size);
@@ -347,7 +348,7 @@ fp_calltree_leaves(struct sr_strbuf *fingerprint,
         return false;
 
     qsort(symbol_list, symbol_list_size,
-          sizeof(char*), (comparison_fn_t)strcmp_reverse);
+          sizeof(char*), (comparison_fn_t)strcmp_wrapper);
 
     /* Make it unique. */
     sr_struniq(symbol_list, &symbol_list_size);
-- 
1.7.11.7



More information about the Crash-catcher mailing list