diff options
author | Jonathan White <support@dmapps.us> | 2020-10-07 18:51:47 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2020-10-15 05:23:50 +0300 |
commit | 5278ae51a59d274007be8938161e6032e72ab9eb (patch) | |
tree | 05a54206a6922d24003ddf2e08f3a229e96cc610 | |
parent | fd3cc7e8c3d012d74d649773eb2236bd06f12fbc (diff) |
Improve KDBX error messagesfix/kdbx-errors
-rw-r--r-- | src/format/Kdbx3Reader.cpp | 9 | ||||
-rw-r--r-- | src/format/Kdbx4Reader.cpp | 10 |
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; } } |