diff options
| author | Pavel Vasin <[email protected]> | 2015-08-03 03:03:14 +0300 |
|---|---|---|
| committer | Pavel Vasin <[email protected]> | 2016-05-19 14:52:08 +0300 |
| commit | 02ce2a3ca773e2d10ff37ecf50d15c71113f3335 (patch) | |
| tree | a8cb0bb6087c502d51f6d4f62c33b302318129cd /src | |
| parent | Merge #8070: Remove non-determinism which is breaking net_tests #8069 (diff) | |
| download | discoin-02ce2a3ca773e2d10ff37ecf50d15c71113f3335.tar.xz discoin-02ce2a3ca773e2d10ff37ecf50d15c71113f3335.zip | |
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)
Diffstat (limited to 'src')
| -rw-r--r-- | src/qt/askpassphrasedialog.cpp | 21 | ||||
| -rw-r--r-- | src/qt/askpassphrasedialog.h | 1 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index 415bffb99..e8aa79679 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -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() 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) } 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); +} diff --git a/src/qt/askpassphrasedialog.h b/src/qt/askpassphrasedialog.h index 727b5a1ad..34bf7ccb3 100644 --- a/src/qt/askpassphrasedialog.h +++ b/src/qt/askpassphrasedialog.h @@ -42,6 +42,7 @@ private: private Q_SLOTS: void textChanged(); + void secureClearPassFields(); protected: bool event(QEvent *event); |