aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/valgrind
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-06-04 12:29:07 +0200
committerhjk <hjk@qt.io>2019-06-05 08:12:59 +0000
commitb15fce086eac752bf25edd5eb138f92df7e2ce4f (patch)
tree3141c260f735e5ebe3d21a6799ae00a120df7d95 /src/plugins/valgrind
parentc7e2dc97e1144212db3b8dddea1e9bb4fffae66a (diff)
Valgrind: Sanitize commandline parameter construction
Change-Id: I4d13e92c0e4a474e5edf67671ddc7f2e38c41028 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/valgrind')
-rw-r--r--src/plugins/valgrind/valgrindrunner.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/plugins/valgrind/valgrindrunner.cpp b/src/plugins/valgrind/valgrindrunner.cpp
index f99a4847a04..827e2c2b4e3 100644
--- a/src/plugins/valgrind/valgrindrunner.cpp
+++ b/src/plugins/valgrind/valgrindrunner.cpp
@@ -82,13 +82,15 @@ public:
bool ValgrindRunner::Private::run()
{
+ QStringList arguments;
+
if (!localServerAddress.isNull()) {
if (!q->startServers())
return false;
- bool enableXml = !disableXml;
+ arguments.append("--child-silent-after-fork=yes");
- QStringList arguments = {"--child-silent-after-fork=yes"};
+ bool enableXml = !disableXml;
auto handleSocketParameter = [&enableXml, &arguments](const QString &prefix, const QTcpServer &tcpServer)
{
@@ -109,10 +111,8 @@ bool ValgrindRunner::Private::run()
if (enableXml)
arguments << "--xml=yes";
-
- // FIXME: Unclear why this changes the stored data.
- m_valgrindArguments = arguments + m_valgrindArguments;
}
+ arguments += m_valgrindArguments;
m_valgrindProcess.setProcessChannelMode(channelMode);
// consider appending our options last so they override any interfering user-supplied options
@@ -136,18 +136,17 @@ bool ValgrindRunner::Private::run()
connect(&m_valgrindProcess, &ApplicationLauncher::remoteProcessStarted,
this, &ValgrindRunner::Private::remoteProcessStarted);
- QStringList fullArgs = m_valgrindArguments;
if (HostOsInfo::isMacHost())
// May be slower to start but without it we get no filenames for symbols.
- fullArgs << "--dsymutil=yes";
- fullArgs << m_debuggee.executable;
+ arguments << "--dsymutil=yes";
+ arguments << m_debuggee.executable;
Runnable valgrind;
valgrind.executable = m_valgrindExecutable;
valgrind.workingDirectory = m_debuggee.workingDirectory;
valgrind.environment = m_debuggee.environment;
valgrind.device = m_device;
- valgrind.commandLineArguments = QtcProcess::joinArgs(fullArgs, m_device->osType());
+ valgrind.commandLineArguments = QtcProcess::joinArgs(arguments, m_device->osType());
Utils::QtcProcess::addArgs(&valgrind.commandLineArguments, m_debuggee.commandLineArguments);
emit q->valgrindExecuted(QtcProcess::quoteArg(valgrind.executable) + ' '
+ valgrind.commandLineArguments);