From: Pavel Vasin Date: Fri, 29 Nov 2019 12:37:56 +0000 (+0200) Subject: qt: askpassphrasedialog: Clear pass fields on accept X-Git-Tag: nvc-v0.5.9~141^2~12 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=8037df7fbad6c5886b2fb3e643233db8dd7a45ec 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) --- diff --git a/src/qt/askpassphrasedialog.cpp b/src/qt/askpassphrasedialog.cpp index 9e91cb1..6569989 100644 --- a/src/qt/askpassphrasedialog.cpp +++ b/src/qt/askpassphrasedialog.cpp @@ -67,10 +67,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; } @@ -92,6 +89,8 @@ void AskPassphraseDialog::accept() oldpass.assign(ui->passEdit1->text().toStdString().c_str()); newpass1.assign(ui->passEdit2->text().toStdString().c_str()); newpass2.assign(ui->passEdit3->text().toStdString().c_str()); + + secureClearPassFields(); switch(mode) { @@ -267,3 +266,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); +} \ No newline at end of file diff --git a/src/qt/askpassphrasedialog.h b/src/qt/askpassphrasedialog.h index 5909fb6..9e46410 100644 --- a/src/qt/askpassphrasedialog.h +++ b/src/qt/askpassphrasedialog.h @@ -39,6 +39,7 @@ private: private slots: void textChanged(); + void secureClearPassFields(); bool event(QEvent *event); bool eventFilter(QObject *, QEvent *event); };