diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 8aa3d10eb..23a4a2507 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -63,14 +63,28 @@ const struct { {NULL, NULL} }; +namespace { + // don't add private key handling cmd's to the history -const QStringList RPCConsole::historyFilter = QStringList() +const QStringList historyFilter = QStringList() << "importprivkey" << "signrawtransaction" << "walletpassphrase" << "walletpassphrasechange" << "encryptwallet"; +bool command_may_contain_sensitive_data(const QString cmd) +{ + Q_FOREACH(QString unallowedCmd, historyFilter) { + if (cmd.trimmed().startsWith(unallowedCmd)) { + return true; + } + } + return false; +} + +} + /* Object for executing console RPC commands in a separate thread. */ class RPCExecutor : public QObject @@ -764,15 +778,7 @@ void RPCConsole::on_lineEdit_returnPressed() message(CMD_REQUEST, cmd); Q_EMIT cmdRequest(cmd); - bool storeHistory = true; - Q_FOREACH(QString unallowedCmd, historyFilter) - { - if (cmd.trimmed().startsWith(unallowedCmd)) - { - storeHistory = false; - break; - } - } + bool storeHistory = !command_may_contain_sensitive_data(cmd); if (storeHistory) { diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 4841ea825..e1698711d 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -140,7 +140,6 @@ private: ClientModel *clientModel; QStringList history; int historyPtr; - const static QStringList historyFilter; QString cmdBeforeBrowsing; QList cachedNodeids; const PlatformStyle *platformStyle;