summaryrefslogtreecommitdiffstats
path: root/common/storage/entitystore.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-05-03 21:29:28 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-05-03 21:29:28 +0200
commit9228b3ba170a0f68dbb432b2455c75d5fff21506 (patch)
tree0bfc3231b050efcfb7c5aec0664bd4739a6266f2 /common/storage/entitystore.cpp
parentca5020095abfb76e63bd801e9722c07193eb05f5 (diff)
downloadsink-9228b3ba170a0f68dbb432b2455c75d5fff21506.tar.gz
sink-9228b3ba170a0f68dbb432b2455c75d5fff21506.zip
Sanity check db names
lmdb and sink deal badly with e.g. a string containing a null in the millde as db name. Thus we try to protect better against it. This is an actual problem we triggered: https://phabricator.kde.org/T5880
Diffstat (limited to 'common/storage/entitystore.cpp')
-rw-r--r--common/storage/entitystore.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/common/storage/entitystore.cpp b/common/storage/entitystore.cpp
index b7309ab..4cb4641 100644
--- a/common/storage/entitystore.cpp
+++ b/common/storage/entitystore.cpp
@@ -320,6 +320,11 @@ void EntityStore::cleanupEntityRevisionsUntil(qint64 revision)
320{ 320{
321 const auto uid = DataStore::getUidFromRevision(d->transaction, revision); 321 const auto uid = DataStore::getUidFromRevision(d->transaction, revision);
322 const auto bufferType = DataStore::getTypeFromRevision(d->transaction, revision); 322 const auto bufferType = DataStore::getTypeFromRevision(d->transaction, revision);
323 if (bufferType.isEmpty() || uid.isEmpty()) {
324 SinkErrorCtx(d->logCtx) << "Failed to find revision during cleanup: " << revision;
325 Q_ASSERT(false);
326 return;
327 }
323 SinkTraceCtx(d->logCtx) << "Cleaning up revision " << revision << uid << bufferType; 328 SinkTraceCtx(d->logCtx) << "Cleaning up revision " << revision << uid << bufferType;
324 DataStore::mainDatabase(d->transaction, bufferType) 329 DataStore::mainDatabase(d->transaction, bufferType)
325 .scan(uid, 330 .scan(uid,