diff options
| author | Tobias Hunger <tobias.hunger@digia.com> | 2014-02-27 13:48:33 +0100 |
|---|---|---|
| committer | Tobias Hunger <tobias.hunger@digia.com> | 2014-02-27 13:53:01 +0100 |
| commit | d2cad7d1a6444ca1e5c81582f5e8c4ba1db56480 (patch) | |
| tree | 92c4fd39df9d3ee85abba22ae7d38962ec971ce6 | |
| parent | c03bcef429cc3320dba91e0cbc1b5c61d3604ec5 (diff) | |
| download | qt-creator-d2cad7d1a6444ca1e5c81582f5e8c4ba1db56480.tar.gz | |
VcsOutputPane: Filter passwords from URLs
Task-number: QTCREATORBUG-11246
Change-Id: Ib204b2e0392d1c1876f01876d7f90f56e91218d4
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
| -rw-r--r-- | src/plugins/vcsbase/vcsbaseoutputwindow.cpp | 19 | ||||
| -rw-r--r-- | src/plugins/vcsbase/vcsbaseoutputwindow.h | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp index 3ec044e271..94b5d645f0 100644 --- a/src/plugins/vcsbase/vcsbaseoutputwindow.cpp +++ b/src/plugins/vcsbase/vcsbaseoutputwindow.cpp @@ -272,6 +272,7 @@ public: QPointer<Internal::OutputWindowPlainTextEdit> m_plainTextEdit; QString repository; + QRegExp passwordRegExp; }; // Create log editor on demand. Some errors might be logged @@ -289,9 +290,25 @@ VcsBaseOutputWindow *VcsBaseOutputWindowPrivate::instance = 0; VcsBaseOutputWindow::VcsBaseOutputWindow() : d(new VcsBaseOutputWindowPrivate) { + d->passwordRegExp = QRegExp(QLatin1String("://([^@:]+):([^@]+)@")); + Q_ASSERT(d->passwordRegExp.isValid()); VcsBaseOutputWindowPrivate::instance = this; } +QString VcsBaseOutputWindow::filterPasswordFromUrls(const QString &input) +{ + int pos = 0; + QString result = input; + while ((pos = d->passwordRegExp.indexIn(result, pos)) >= 0) { + QString tmp = result.left(pos + 3) + d->passwordRegExp.cap(1) + QLatin1String(":***@"); + int newStart = tmp.count(); + tmp += result.mid(pos + d->passwordRegExp.matchedLength()); + result = tmp; + pos = newStart; + } + return result; +} + VcsBaseOutputWindow::~VcsBaseOutputWindow() { VcsBaseOutputWindowPrivate::instance = 0; @@ -443,7 +460,7 @@ QString VcsBaseOutputWindow::msgExecutionLogEntry(const QString &workingDir, void VcsBaseOutputWindow::appendCommand(const QString &text) { - append(text, Command, true); + append(filterPasswordFromUrls(text), Command, true); } void VcsBaseOutputWindow::appendCommand(const QString &workingDirectory, diff --git a/src/plugins/vcsbase/vcsbaseoutputwindow.h b/src/plugins/vcsbase/vcsbaseoutputwindow.h index 6e52b7aebd..84fa6999bb 100644 --- a/src/plugins/vcsbase/vcsbaseoutputwindow.h +++ b/src/plugins/vcsbase/vcsbaseoutputwindow.h @@ -121,6 +121,8 @@ public slots: private: VcsBaseOutputWindow(); + QString filterPasswordFromUrls(const QString &input); + VcsBaseOutputWindowPrivate *d; }; |
