diff --git a/lib/core/common.py b/lib/core/common.py index f3a251519..3c656c8f1 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -3092,6 +3092,8 @@ def decodeHexValue(value): Returns value decoded from DBMS specific hexadecimal representation """ + retVal = value + def _(value): if value and isinstance(value, basestring) and len(value) % 2 == 0: if value.lower().startswith("0x"): @@ -3109,7 +3111,12 @@ def decodeHexValue(value): pass return value - return applyFunctionRecursively(value, _) + try: + retVal = applyFunctionRecursively(value, _) + except Exception: + singleTimeWarnMessage("there was a problem decoding value '%s' from expected hexadecimal form" % value) + + return retVal def extractExpectedValue(value, expected): """ diff --git a/lib/utils/hashdb.py b/lib/utils/hashdb.py index 71434a2e3..e243ea263 100644 --- a/lib/utils/hashdb.py +++ b/lib/utils/hashdb.py @@ -12,6 +12,7 @@ import sqlite3 import threading import time +from lib.core.common import getUnicode from lib.core.common import serializeObject from lib.core.common import unserializeObject from lib.core.settings import HASHDB_FLUSH_THRESHOLD @@ -74,7 +75,7 @@ class HashDB(object): if key: hash_ = HashDB.hashKey(key) self._cache_lock.acquire() - self._write_cache[hash_] = value if not serialize else serializeObject(value) + self._write_cache[hash_] = getUnicode(value) if not serialize else serializeObject(value) self._cache_lock.release() if getCurrentThreadName() in ('0', 'MainThread'):