summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2014-02-27 13:48:33 +0100
committerTobias Hunger <tobias.hunger@digia.com>2014-02-27 13:53:01 +0100
commitd2cad7d1a6444ca1e5c81582f5e8c4ba1db56480 (patch)
tree92c4fd39df9d3ee85abba22ae7d38962ec971ce6
parentc03bcef429cc3320dba91e0cbc1b5c61d3604ec5 (diff)
downloadqt-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.cpp19
-rw-r--r--src/plugins/vcsbase/vcsbaseoutputwindow.h2
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;
};