Browse Source

qt: askpassphrasedialog: Clear pass fields on accept

This is usability improvement in a case if user gets re-asked
passphrase. (e.g. made a typo)
pull/1/head
Pavel Vasin 7 years ago
parent
commit
02ce2a3ca7
  1. 21
      src/qt/askpassphrasedialog.cpp
  2. 1
      src/qt/askpassphrasedialog.h

21
src/qt/askpassphrasedialog.cpp

@ -77,10 +77,7 @@ AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) : @@ -77,10 +77,7 @@ AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) :
AskPassphraseDialog::~AskPassphraseDialog()
{
// Attempt to overwrite text so that they do not linger around in memory
ui->passEdit1->setText(QString(" ").repeated(ui->passEdit1->text().size()));
ui->passEdit2->setText(QString(" ").repeated(ui->passEdit2->text().size()));
ui->passEdit3->setText(QString(" ").repeated(ui->passEdit3->text().size()));
secureClearPassFields();
delete ui;
}
@ -103,6 +100,8 @@ void AskPassphraseDialog::accept() @@ -103,6 +100,8 @@ void AskPassphraseDialog::accept()
newpass1.assign(ui->passEdit2->text().toStdString().c_str());
newpass2.assign(ui->passEdit3->text().toStdString().c_str());
secureClearPassFields();
switch(mode)
{
case Encrypt: {
@ -260,3 +259,17 @@ bool AskPassphraseDialog::eventFilter(QObject *object, QEvent *event) @@ -260,3 +259,17 @@ bool AskPassphraseDialog::eventFilter(QObject *object, QEvent *event)
}
return QDialog::eventFilter(object, event);
}
static void SecureClearQLineEdit(QLineEdit* edit)
{
// Attempt to overwrite text so that they do not linger around in memory
edit->setText(QString(" ").repeated(edit->text().size()));
edit->clear();
}
void AskPassphraseDialog::secureClearPassFields()
{
SecureClearQLineEdit(ui->passEdit1);
SecureClearQLineEdit(ui->passEdit2);
SecureClearQLineEdit(ui->passEdit3);
}

1
src/qt/askpassphrasedialog.h

@ -42,6 +42,7 @@ private: @@ -42,6 +42,7 @@ private:
private Q_SLOTS:
void textChanged();
void secureClearPassFields();
protected:
bool event(QEvent *event);

Loading…
Cancel
Save