mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-02-13 05:01:21 -05:00
Backport code to read database public headers
This is required to show the public icon, color, and name of a locked database
This commit is contained in:
parent
f48dcb3dba
commit
14ee702b09
@ -55,6 +55,8 @@ bool KdbxReader::readMagicNumbers(QIODevice* device, quint32& sig1, quint32& sig
|
||||
* Read KDBX stream from device.
|
||||
* The device will automatically be reset to 0 before reading.
|
||||
*
|
||||
* Passing a null key will only read in the unprotected headers.
|
||||
*
|
||||
* @param device input device
|
||||
* @param key database encryption composite key
|
||||
* @param db database to read into
|
||||
@ -91,6 +93,11 @@ bool KdbxReader::readDatabase(QIODevice* device, QSharedPointer<const CompositeK
|
||||
return false;
|
||||
}
|
||||
|
||||
// No key provided - don't proceed to load payload
|
||||
if (key.isNull()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// read payload
|
||||
return readDatabaseImpl(device, headerStream.storedData(), std::move(key), db);
|
||||
}
|
||||
|
@ -242,6 +242,12 @@ void DatabaseOpenWidget::load(const QString& filename)
|
||||
clearForms();
|
||||
|
||||
m_filename = filename;
|
||||
|
||||
// Read public headers
|
||||
QString error;
|
||||
m_db.reset(new Database());
|
||||
m_db->open(m_filename, nullptr, &error);
|
||||
|
||||
m_ui->fileNameLabel->setRawText(m_filename);
|
||||
|
||||
// Set the public name if defined
|
||||
@ -296,7 +302,9 @@ void DatabaseOpenWidget::clearForms()
|
||||
toggleHardwareKeyComponent(false);
|
||||
toggleQuickUnlockScreen();
|
||||
|
||||
m_db.reset(new Database(m_filename));
|
||||
QString error;
|
||||
m_db.reset(new Database());
|
||||
m_db->open(m_filename, nullptr, &error);
|
||||
}
|
||||
|
||||
QSharedPointer<Database> DatabaseOpenWidget::database()
|
||||
@ -361,6 +369,8 @@ void DatabaseOpenWidget::openDatabase()
|
||||
msgBox->exec();
|
||||
if (msgBox->clickedButton() != btn) {
|
||||
m_db.reset(new Database());
|
||||
m_db->open(m_filename, nullptr, &error);
|
||||
|
||||
m_ui->messageWidget->showMessage(tr("Database unlock canceled."), MessageWidget::MessageType::Error);
|
||||
setUserInteractionLock(false);
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user