From 889be45e893425273d545a73edc42c4bbead446d Mon Sep 17 00:00:00 2001 From: Harald Sitter Date: Tue, 22 Nov 2016 13:56:57 +0100 Subject: [PATCH] properly parse exec line before qprocessing it for autostart Summary: BUG: 372153 CHANGELOG: Repaired autostart of desktop files with place holders FIXED-IN: 5.8.4 Test Plan: - add firefox.desktop to autostart - make sure it autostarts without errors on next login I really wish we had a framework to test this in isolation :/ Reviewers: davidedmundson Reviewed By: davidedmundson Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D3454 --- ksmserver/startup.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ksmserver/startup.cpp b/ksmserver/startup.cpp index 613676370..913289345 100644 --- a/ksmserver/startup.cpp +++ b/ksmserver/startup.cpp @@ -68,6 +68,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include +#include #include #include #include @@ -678,7 +679,13 @@ void KSMServer::slotAutoStart() KService service(serviceName); qCInfo(KSMSERVER) << "Starting autostart service " << serviceName; auto p = new QProcess(this); - p->start(service.exec()); + auto arguments = KIO::DesktopExecParser(service, QList()).resultingArguments(); + if (arguments.isEmpty()) { + qCInfo(KSMSERVER) << "failed to parse" << serviceName << "for autostart"; + continue; + } + auto program = arguments.takeFirst(); + p->start(program, arguments); connect(p, static_cast(&QProcess::finished), [p](int exitCode) { qCInfo(KSMSERVER) << "autostart service" << p->program() << "finished with exit code " << exitCode; p->deleteLater();