aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYordan Karadzhov (VMware) <y.karadz@gmail.com>2019-08-08 16:51:21 +0300
committerYordan Karadzhov (VMware) <y.karadz@gmail.com>2019-08-19 12:58:51 +0300
commit9fd45053fdaf73456619174a8f73065555261a4a (patch)
treee36e327f6e93e9c4705b304e9cb9c6c65a5dd3cf
parent56a529a6ee2d516815c4a9a33c36bcc84dfe162e (diff)
downloadtrace-cmd-9fd45053fdaf73456619174a8f73065555261a4a.tar.gz
kernel-shark: Don't use pkexec when running as Root
If KernelShark GUI has been started as Root we do not need to use "pkexec" when starting the Record dialog. Note that the actual place where "pkexec" gets used is in the script "kshark-su-record". Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
-rw-r--r--kernel-shark/src/KsMainWindow.cpp47
1 files changed, 32 insertions, 15 deletions
diff --git a/kernel-shark/src/KsMainWindow.cpp b/kernel-shark/src/KsMainWindow.cpp
index 2f86517f..7c183918 100644
--- a/kernel-shark/src/KsMainWindow.cpp
+++ b/kernel-shark/src/KsMainWindow.cpp
@@ -883,23 +883,26 @@ void KsMainWindow::_pluginAdd()
void KsMainWindow::_record()
{
-#ifndef DO_AS_ROOT
+ bool canDoAsRoot(false);
- QErrorMessage *em = new QErrorMessage(this);
- QString message;
-
- message = "Record is currently not supported.";
- message += " Install \"pkexec\" and then do:<br>";
- message += " cd build <br> sudo ./cmake_uninstall.sh <br>";
- message += " ./cmake_clean.sh <br> cmake .. <br> make <br>";
- message += " sudo make install";
+#ifdef DO_AS_ROOT
+ canDoAsRoot = true;
+#endif
- em->showMessage(message);
- qCritical() << "ERROR: " << message;
+ if (geteuid() && !canDoAsRoot) {
+ QErrorMessage *em = new QErrorMessage(this);
+ QString message;
- return;
+ message = "Record is currently not supported.";
+ message += " Install \"pkexec\" and then do:<br>";
+ message += " cd build <br> sudo ./cmake_uninstall.sh <br>";
+ message += " ./cmake_clean.sh <br> cmake .. <br> make <br>";
+ message += " sudo make install";
-#endif
+ em->showMessage(message);
+ qCritical() << "ERROR: " << message;
+ return;
+ }
_capture.start();
}
@@ -1134,9 +1137,24 @@ void KsMainWindow::loadSession(const QString &fileName)
void KsMainWindow::_initCapture()
{
+ bool canDoAsRoot(false);
+
#ifdef DO_AS_ROOT
+ canDoAsRoot = true;
+#endif
+
+ if (geteuid() && !canDoAsRoot)
+ return;
- _capture.setProgram("kshark-su-record");
+ if (geteuid()) {
+ _capture.setProgram("kshark-su-record");
+ } else {
+ QStringList argv;
+
+ _capture.setProgram("kshark-record");
+ argv << QString("-o") << QDir::homePath() + "/trace.dat";
+ _capture.setArguments(argv);
+ }
connect(&_capture, &QProcess::started,
this, &KsMainWindow::_captureStarted);
@@ -1155,7 +1173,6 @@ void KsMainWindow::_initCapture()
connect(&_captureLocalServer, &QLocalServer::newConnection,
this, &KsMainWindow::_readSocket);
-#endif
}
void KsMainWindow::_captureStarted()