[omemo] Sanitize BLOBs in prekeys table
This commit is contained in:
@@ -147,7 +147,7 @@ class LiteAxolotlStore(AxolotlStore):
|
|||||||
create_db_sql = """
|
create_db_sql = """
|
||||||
BEGIN TRANSACTION;
|
BEGIN TRANSACTION;
|
||||||
%s
|
%s
|
||||||
PRAGMA user_version=10;
|
PRAGMA user_version=11;
|
||||||
END TRANSACTION;
|
END TRANSACTION;
|
||||||
""" % (create_tables)
|
""" % (create_tables)
|
||||||
self._con.executescript(create_db_sql)
|
self._con.executescript(create_db_sql)
|
||||||
@@ -324,6 +324,29 @@ class LiteAxolotlStore(AxolotlStore):
|
|||||||
self._con.execute('PRAGMA user_version=10')
|
self._con.execute('PRAGMA user_version=10')
|
||||||
self._con.commit()
|
self._con.commit()
|
||||||
|
|
||||||
|
if self.user_version() < 11:
|
||||||
|
# Sanitize invalid BLOBs from the python2 days
|
||||||
|
query_keys = '''SELECT _id,
|
||||||
|
prekey_id,
|
||||||
|
sent_to_server,
|
||||||
|
CAST(record as BLOB) as record
|
||||||
|
FROM prekeys'''
|
||||||
|
rows = self._con.execute(query_keys).fetchall()
|
||||||
|
|
||||||
|
delete = 'DELETE FROM prekeys'
|
||||||
|
self._con.execute(delete)
|
||||||
|
|
||||||
|
insert = '''INSERT INTO prekeys (
|
||||||
|
_id, prekey_id, sent_to_server, record)
|
||||||
|
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=11')
|
||||||
|
self._con.commit()
|
||||||
|
|
||||||
def loadSignedPreKey(self, signedPreKeyId):
|
def loadSignedPreKey(self, signedPreKeyId):
|
||||||
query = 'SELECT record FROM signed_prekeys WHERE prekey_id = ?'
|
query = 'SELECT record FROM signed_prekeys WHERE prekey_id = ?'
|
||||||
result = self._con.execute(query, (signedPreKeyId, )).fetchone()
|
result = self._con.execute(query, (signedPreKeyId, )).fetchone()
|
||||||
|
|||||||
Reference in New Issue
Block a user