diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-09 14:03:15 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-02-09 14:03:15 +0100 |
commit | 2c310fd7a0f5f653abba42b6d0f6cf6cf91ee0b5 (patch) | |
tree | 9e54eb3a2df6f2028767e45b8501385fead70395 /lib | |
parent | 00ed6c11acc8dec49e5b3e70d255f10066f79320 (diff) | |
download | abrt-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>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Plugins/Python.cpp | 23 |
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) { |