From 9044908636f0072d001d9a029053a384127b002b Mon Sep 17 00:00:00 2001 From: Jonas Schnelli Date: Fri, 13 Mar 2015 21:51:27 +0100 Subject: [PATCH] Qt/RPCConsole: Don't store commands with potentially sensitive information in the history Filters importprivkey, signrawtransaction, walletpassphrase, walletpassphrasechange, and encryptwallet --- src/qt/rpcconsole.cpp | 37 ++++++++++++++++++++++++++++--------- src/qt/rpcconsole.h | 1 + 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 5610e8b6c..562c9509d 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -63,6 +63,14 @@ const struct { {NULL, NULL} }; +// don't add private key handling cmd's to the history +const QStringList RPCConsole::historyFilter = QStringList() + << "importprivkey" + << "signrawtransaction" + << "walletpassphrase" + << "walletpassphrasechange" + << "encryptwallet"; + /* Object for executing console RPC commands in a separate thread. */ class RPCExecutor : public QObject @@ -755,15 +763,26 @@ void RPCConsole::on_lineEdit_returnPressed() message(CMD_REQUEST, cmd); Q_EMIT cmdRequest(cmd); - // Remove command, if already in history - history.removeOne(cmd); - // Append command to history - history.append(cmd); - // Enforce maximum history size - while(history.size() > CONSOLE_HISTORY) - history.removeFirst(); - // Set pointer to end of history - historyPtr = history.size(); + + bool storeHistory = true; + Q_FOREACH(QString unallowedCmd, historyFilter) + { + if (cmd.trimmed().startsWith(unallowedCmd)) + storeHistory = false; break; + } + + if (storeHistory) + { + // Remove command, if already in history + history.removeOne(cmd); + // Append command to history + history.append(cmd); + // Enforce maximum history size + while(history.size() > CONSOLE_HISTORY) + history.removeFirst(); + // Set pointer to end of history + historyPtr = history.size(); + } // Scroll console view to end scrollToEnd(); } diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index e1698711d..4841ea825 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -140,6 +140,7 @@ private: ClientModel *clientModel; QStringList history; int historyPtr; + const static QStringList historyFilter; QString cmdBeforeBrowsing; QList cachedNodeids; const PlatformStyle *platformStyle;