Skip to content

Commit 02ce2a3

Browse files
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)
1 parent 7771aa5 commit 02ce2a3

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

src/qt/askpassphrasedialog.cpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,7 @@ AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) :
7777

7878
AskPassphraseDialog::~AskPassphraseDialog()
7979
{
80-
// Attempt to overwrite text so that they do not linger around in memory
81-
ui->passEdit1->setText(QString(" ").repeated(ui->passEdit1->text().size()));
82-
ui->passEdit2->setText(QString(" ").repeated(ui->passEdit2->text().size()));
83-
ui->passEdit3->setText(QString(" ").repeated(ui->passEdit3->text().size()));
80+
secureClearPassFields();
8481
delete ui;
8582
}
8683

@@ -103,6 +100,8 @@ void AskPassphraseDialog::accept()
103100
newpass1.assign(ui->passEdit2->text().toStdString().c_str());
104101
newpass2.assign(ui->passEdit3->text().toStdString().c_str());
105102

103+
secureClearPassFields();
104+
106105
switch(mode)
107106
{
108107
case Encrypt: {
@@ -260,3 +259,17 @@ bool AskPassphraseDialog::eventFilter(QObject *object, QEvent *event)
260259
}
261260
return QDialog::eventFilter(object, event);
262261
}
262+
263+
static void SecureClearQLineEdit(QLineEdit* edit)
264+
{
265+
// Attempt to overwrite text so that they do not linger around in memory
266+
edit->setText(QString(" ").repeated(edit->text().size()));
267+
edit->clear();
268+
}
269+
270+
void AskPassphraseDialog::secureClearPassFields()
271+
{
272+
SecureClearQLineEdit(ui->passEdit1);
273+
SecureClearQLineEdit(ui->passEdit2);
274+
SecureClearQLineEdit(ui->passEdit3);
275+
}

src/qt/askpassphrasedialog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class AskPassphraseDialog : public QDialog
4242

4343
private Q_SLOTS:
4444
void textChanged();
45+
void secureClearPassFields();
4546

4647
protected:
4748
bool event(QEvent *event);

0 commit comments

Comments
 (0)