KeePass2Reader: fix error message logic (#2523)

This commit is contained in:
Carlo Teubner 2018-12-02 15:05:54 +00:00 committed by Jonathan White
parent bdee748a6a
commit b6eeabab5e

View File

@ -64,22 +64,25 @@ bool KeePass2Reader::readDatabase(QIODevice* device, QSharedPointer<const Compos
quint32 signature1, signature2; quint32 signature1, signature2;
bool ok = KdbxReader::readMagicNumbers(device, signature1, signature2, m_version); bool ok = KdbxReader::readMagicNumbers(device, signature1, signature2, m_version);
// mask out minor version if (!ok) {
m_version &= KeePass2::FILE_VERSION_CRITICAL_MASK; raiseError(tr("Failed to read database file."));
if (!ok || signature1 != KeePass2::SIGNATURE_1 || signature2 != KeePass2::SIGNATURE_2) {
raiseError(tr("Not a KeePass database."));
return false; return false;
} }
if (signature2 == KeePass1::SIGNATURE_2) { if (signature1 == KeePass1::SIGNATURE_1 && signature2 == KeePass1::SIGNATURE_2) {
raiseError(tr("The selected file is an old KeePass 1 database (.kdb).\n\n" raiseError(tr("The selected file is an old KeePass 1 database (.kdb).\n\n"
"You can import it by clicking on Database > 'Import KeePass 1 database...'.\n" "You can import it by clicking on Database > 'Import KeePass 1 database...'.\n"
"This is a one-way migration. You won't be able to open the imported " "This is a one-way migration. You won't be able to open the imported "
"database with the old KeePassX 0.4 version.")); "database with the old KeePassX 0.4 version."));
return false; return false;
} else if (!(signature1 == KeePass2::SIGNATURE_1 && signature2 == KeePass2::SIGNATURE_2)) {
raiseError(tr("Not a KeePass database."));
return false;
} }
// mask out minor version
m_version &= KeePass2::FILE_VERSION_CRITICAL_MASK;
quint32 maxVersion = KeePass2::FILE_VERSION_4 & KeePass2::FILE_VERSION_CRITICAL_MASK; quint32 maxVersion = KeePass2::FILE_VERSION_4 & KeePass2::FILE_VERSION_CRITICAL_MASK;
if (m_version < KeePass2::FILE_VERSION_MIN || m_version > maxVersion) { if (m_version < KeePass2::FILE_VERSION_MIN || m_version > maxVersion) {
raiseError(tr("Unsupported KeePass 2 database version.")); raiseError(tr("Unsupported KeePass 2 database version."));