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

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan White <support@dmapps.us>2020-10-07 18:51:47 +0300
committerJonathan White <support@dmapps.us>2020-10-15 05:23:50 +0300
commit5278ae51a59d274007be8938161e6032e72ab9eb (patch)
tree05a54206a6922d24003ddf2e08f3a229e96cc610
parentfd3cc7e8c3d012d74d649773eb2236bd06f12fbc (diff)
Improve KDBX error messagesfix/kdbx-errors
-rw-r--r--src/format/Kdbx3Reader.cpp9
-rw-r--r--src/format/Kdbx4Reader.cpp10
2 files changed, 12 insertions, 7 deletions
diff --git a/src/format/Kdbx3Reader.cpp b/src/format/Kdbx3Reader.cpp
index 35244f618..8effc57e3 100644
--- a/src/format/Kdbx3Reader.cpp
+++ b/src/format/Kdbx3Reader.cpp
@@ -44,7 +44,7 @@ bool Kdbx3Reader::readDatabaseImpl(QIODevice* device,
// check if all required headers were present
if (m_masterSeed.isEmpty() || m_encryptionIV.isEmpty() || m_streamStartBytes.isEmpty()
|| m_protectedStreamKey.isEmpty() || db->cipher().isNull()) {
- raiseError(tr("missing database headers"));
+ raiseError(tr("Missing database headers"));
return false;
}
@@ -149,7 +149,7 @@ bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream, Database* db)
bool ok;
auto fieldLen = Endian::readSizedInt<quint16>(&headerStream, KeePass2::BYTEORDER, &ok);
if (!ok) {
- raiseError(tr("Invalid header field length"));
+ raiseError(tr("Invalid header field length: field %1").arg(fieldID));
return false;
}
@@ -157,7 +157,10 @@ bool Kdbx3Reader::readHeaderField(StoreDataStream& headerStream, Database* db)
if (fieldLen != 0) {
fieldData = headerStream.read(fieldLen);
if (fieldData.size() != fieldLen) {
- raiseError(tr("Invalid header data length"));
+ raiseError(tr("Invalid header data length: field %1, %2 expected, %3 found")
+ .arg(fieldID)
+ .arg(fieldLen)
+ .arg(fieldData.size()));
return false;
}
}
diff --git a/src/format/Kdbx4Reader.cpp b/src/format/Kdbx4Reader.cpp
index baeab903c..beedfc1ce 100644
--- a/src/format/Kdbx4Reader.cpp
+++ b/src/format/Kdbx4Reader.cpp
@@ -152,7 +152,7 @@ bool Kdbx4Reader::readHeaderField(StoreDataStream& device, Database* db)
bool ok;
auto fieldLen = Endian::readSizedInt<quint32>(&device, KeePass2::BYTEORDER, &ok);
if (!ok) {
- raiseError(tr("Invalid header field length"));
+ raiseError(tr("Invalid header field length: field %1").arg(fieldID));
return false;
}
@@ -160,7 +160,8 @@ bool Kdbx4Reader::readHeaderField(StoreDataStream& device, Database* db)
if (fieldLen != 0) {
fieldData = device.read(fieldLen);
if (static_cast<quint32>(fieldData.size()) != fieldLen) {
- raiseError(tr("Invalid header data length"));
+ raiseError(tr("Invalid header data length: field %1, %2 expected, %3 found")
+ .arg(static_cast<int>(fieldID)).arg(fieldLen).arg(fieldData.size()));
return false;
}
}
@@ -244,7 +245,7 @@ bool Kdbx4Reader::readInnerHeaderField(QIODevice* device)
bool ok;
auto fieldLen = Endian::readSizedInt<quint32>(device, KeePass2::BYTEORDER, &ok);
if (!ok) {
- raiseError(tr("Invalid inner header field length"));
+ raiseError(tr("Invalid inner header field length: field %1").arg(static_cast<int>(fieldID)));
return false;
}
@@ -252,7 +253,8 @@ bool Kdbx4Reader::readInnerHeaderField(QIODevice* device)
if (fieldLen != 0) {
fieldData = device->read(fieldLen);
if (static_cast<quint32>(fieldData.size()) != fieldLen) {
- raiseError(tr("Invalid header data length"));
+ raiseError(tr("Invalid inner header data length: field %1, %2 expected, %3 found")
+ .arg(static_cast<int>(fieldID)).arg(fieldLen).arg(fieldData.size()));
return false;
}
}