Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim-plugins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlovetox <philipp@hoerist.com>2020-05-23 11:34:29 +0300
committerlovetox <philipp@hoerist.com>2020-05-23 13:35:19 +0300
commita8794f1eb832bad0f914684d8fab9d44d9dbd403 (patch)
tree42badbd91827ab9961517ef8e8dd905582641494
parent58c188eb0d0755adf1c6b1e50cb844b070f20742 (diff)
[omemo] Sanitize BLOBs in sessions table
-rw-r--r--omemo/backend/liteaxolotlstore.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/omemo/backend/liteaxolotlstore.py b/omemo/backend/liteaxolotlstore.py
index 88bee0d..99c4359 100644
--- a/omemo/backend/liteaxolotlstore.py
+++ b/omemo/backend/liteaxolotlstore.py
@@ -147,7 +147,7 @@ class LiteAxolotlStore(AxolotlStore):
create_db_sql = """
BEGIN TRANSACTION;
%s
- PRAGMA user_version=9;
+ PRAGMA user_version=10;
END TRANSACTION;
""" % (create_tables)
self._con.executescript(create_db_sql)
@@ -299,6 +299,31 @@ class LiteAxolotlStore(AxolotlStore):
self._con.execute('PRAGMA user_version=9')
self._con.commit()
+ if self.user_version() < 10:
+ # Sanitize invalid BLOBs from the python2 days
+ query_keys = '''SELECT _id,
+ recipient_id,
+ device_id,
+ CAST(record as BLOB) as record,
+ timestamp,
+ active
+ FROM sessions'''
+ rows = self._con.execute(query_keys).fetchall()
+
+ delete = 'DELETE FROM sessions'
+ self._con.execute(delete)
+
+ insert = '''INSERT INTO sessions (_id, recipient_id, device_id,
+ record, timestamp, active)
+ VALUES (?, ?, ?, ?, ?, ?)'''
+ for row in rows:
+ try:
+ self._con.execute(insert, row)
+ except Exception as error:
+ self._log.warning(error)
+ self._con.execute('PRAGMA user_version=10')
+ self._con.commit()
+
def loadSignedPreKey(self, signedPreKeyId):
query = 'SELECT record FROM signed_prekeys WHERE prekey_id = ?'
result = self._con.execute(query, (signedPreKeyId, )).fetchone()