diff mbox series

kernel-shark: Suppress "Root privileges are required" if already root

Message ID 20190723165935.300f58e8@gandalf.local.home (mailing list archive)
State Accepted
Commit 0cc751d1d7a5b922b2288dcd6c86a694a2e42eb3
Headers show
Series kernel-shark: Suppress "Root privileges are required" if already root | expand

Commit Message

Steven Rostedt July 23, 2019, 8:59 p.m. UTC
From: Steven Rostedt (VMware) <rostedt@goodmis.org>

If the tracefs directory is configured into the kernel, and
kshark-record  fails to find the tracing directory, it should test if
it already has root privileges (geteuid() returns zero), before posting
a message "Root privileges are required" as that can confuse users.

Reported-by: howaboutsynergy@pm.me
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
---

Comments

Yordan Karadzhov July 24, 2019, 10:37 a.m. UTC | #1
On 23.07.19 г. 23:59 ч., Steven Rostedt wrote:
> 
> From: Steven Rostedt (VMware) <rostedt@goodmis.org>
> 
> If the tracefs directory is configured into the kernel, and
> kshark-record  fails to find the tracing directory, it should test if
> it already has root privileges (geteuid() returns zero), before posting
> a message "Root privileges are required" as that can confuse users.
> 

Yes, the message can be misleading without this check. Thanks!

> Reported-by: howaboutsynergy@pm.me
> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
> ---
> diff --git a/kernel-shark/src/KsCaptureDialog.cpp b/kernel-shark/src/KsCaptureDialog.cpp
> index 2e6e8f9c..dbf73302 100644
> --- a/kernel-shark/src/KsCaptureDialog.cpp
> +++ b/kernel-shark/src/KsCaptureDialog.cpp
> @@ -18,6 +18,12 @@
>   #include "KsCmakeDef.hpp"
>   #include "KsCaptureDialog.hpp"
>   
> +extern "C" {
> +  // To get access to geteuid()
> +  #include <unistd.h>
> +  #include <sys/types.h>
> +}
> +
>   static inline tep_handle *local_events()
>   {
>   	return tracecmd_local_events(tracecmd_get_tracing_dir());
> @@ -65,7 +71,9 @@ KsCaptureControl::KsCaptureControl(QWidget *parent)
>   
>   		if (!_localTEP)
>   			message += "Cannot find or mount tracing directory.\n";
> -		if (!pluginList.count())
> +
> +		// geteuid() returns 0 if running as effective id of root
> +		if (!pluginList.count() && geteuid())
>   			message += "Root privileges are required.\n";
>   
>   		QLabel *errorLabel = new QLabel(message);
> 

Reviewed-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
diff mbox series

Patch

diff --git a/kernel-shark/src/KsCaptureDialog.cpp b/kernel-shark/src/KsCaptureDialog.cpp
index 2e6e8f9c..dbf73302 100644
--- a/kernel-shark/src/KsCaptureDialog.cpp
+++ b/kernel-shark/src/KsCaptureDialog.cpp
@@ -18,6 +18,12 @@ 
 #include "KsCmakeDef.hpp"
 #include "KsCaptureDialog.hpp"
 
+extern "C" {
+  // To get access to geteuid()
+  #include <unistd.h>
+  #include <sys/types.h>
+}
+
 static inline tep_handle *local_events()
 {
 	return tracecmd_local_events(tracecmd_get_tracing_dir());
@@ -65,7 +71,9 @@  KsCaptureControl::KsCaptureControl(QWidget *parent)
 
 		if (!_localTEP)
 			message += "Cannot find or mount tracing directory.\n";
-		if (!pluginList.count())
+
+		// geteuid() returns 0 if running as effective id of root
+		if (!pluginList.count() && geteuid())
 			message += "Root privileges are required.\n";
 
 		QLabel *errorLabel = new QLabel(message);