changeset 5395:74d5ae62bf74

db: better handling of decoding of changeset_cache values from the database Do some validation of the data to prevent that incorrect data cause weird failures when they are used later on.
author Mads Kiilerich <madski@unity3d.com>
date Mon, 17 Aug 2015 01:11:42 +0200
parents 0b9aadc314de
children e729c2f03ba7
files kallithea/model/db.py
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/model/db.py	Thu Aug 13 15:29:59 2015 +0200
+++ b/kallithea/model/db.py	Mon Aug 17 01:11:42 2015 +0200
@@ -1051,14 +1051,12 @@
 
     @hybrid_property
     def changeset_cache(self):
-        from kallithea.lib.vcs.backends.base import EmptyChangeset
-        dummy = EmptyChangeset().__json__()
-        if not self._changeset_cache:
-            return dummy
         try:
-            return json.loads(self._changeset_cache)
-        except TypeError:
-            return dummy
+            cs_cache = json.loads(self._changeset_cache) # might raise on bad data
+            cs_cache['raw_id'] # verify data, raise exception on error
+            return cs_cache
+        except (TypeError, KeyError, ValueError):
+            return EmptyChangeset().__json__()
 
     @changeset_cache.setter
     def changeset_cache(self, val):