summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-02-09 14:03:15 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-02-09 14:03:15 +0100
commit2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5 (patch)
tree9e54eb3a2df6f2028767e45b8501385fead70395
parent00ed6c11acc8dec49e5b3e70d255f10066f79320 (diff)
downloadabrt-2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5.tar.gz
abrt-2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5.tar.xz
abrt-2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5.zip
Python analyzer: make hashing bug-for-bug compatible :]
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--lib/Plugins/Python.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/lib/Plugins/Python.cpp b/lib/Plugins/Python.cpp
index d6a3084d..12cc47ef 100644
--- a/lib/Plugins/Python.cpp
+++ b/lib/Plugins/Python.cpp
@@ -38,7 +38,27 @@ string CAnalyzerPython::GetLocalUUID(const char *pDebugDumpDir)
unsigned char hash2[MD5_RESULT_LEN];
md5_ctx_t md5ctx;
md5_begin(&md5ctx);
- md5_hash(bt_str, bt_end - bt_str, &md5ctx);
+ // Better:
+ // "example.py:1:<module>:ZeroDivisionError: integer division or modulo by zero"
+ //md5_hash(bt_str, bt_end - bt_str, &md5ctx);
+ // For now using compat version:
+ {
+ char *copy = xstrndup(bt_str, bt_end - bt_str);
+ char *s = copy;
+ char *d = copy;
+ unsigned colon_cnt = 0;
+ while (*s && colon_cnt < 3) {
+ if (*s != ':')
+ *d++ = *s;
+ else
+ colon_cnt++;
+ s++;
+ }
+ // "example.py1<module>"
+ md5_hash(copy, d - copy, &md5ctx);
+//*d = '\0'; log("str:'%s'", copy);
+ free(copy);
+ }
md5_end(hash2, &md5ctx);
// Hash is MD5_RESULT_LEN bytes long, but we use only first 4
@@ -56,7 +76,6 @@ string CAnalyzerPython::GetLocalUUID(const char *pDebugDumpDir)
//log("hash2:%s str:'%.*s'", hash_str, (int)(bt_end - bt_str), bt_str);
return hash_str;
-
}
string CAnalyzerPython::GetGlobalUUID(const char *pDebugDumpDir)
{