diff options
author | hjk <hjk@qt.io> | 2019-06-04 12:29:07 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-06-05 08:12:59 +0000 |
commit | b15fce086eac752bf25edd5eb138f92df7e2ce4f (patch) | |
tree | 3141c260f735e5ebe3d21a6799ae00a120df7d95 /src/plugins/valgrind | |
parent | c7e2dc97e1144212db3b8dddea1e9bb4fffae66a (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.cpp | 17 |
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); |