You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/kde-frameworks/kglobalaccel/files/kglobalaccel-5.80.0-dont-ru...

44 lines
1.4 KiB

From bbec74337b3186bc258bd5adf849b89191789535 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Fri, 29 Jan 2021 11:31:54 +0100
Subject: [PATCH] Don't let kglobalaccel run if KDE_SESSION_UID mismatches
Otherwise shortcuts execute actions as the wrong user.
---
src/runtime/main.cpp | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/runtime/main.cpp b/src/runtime/main.cpp
index d2917ad..46506b3 100644
--- a/src/runtime/main.cpp
+++ b/src/runtime/main.cpp
@@ -10,6 +10,8 @@
#include "kglobalacceld.h"
#include "logging_p.h"
+#include <unistd.h>
+
#include <KAboutData>
#include <KCrash>
#include <KDBusService>
@@ -57,6 +59,16 @@ extern "C" Q_DECL_EXPORT int main(int argc, char **argv)
return 0;
}
+ // It's possible that kglobalaccel gets started as the wrong user by
+ // accident, e.g. kdesu dolphin leads to dbus activation. It then installs
+ // its grabs and the actions are run as the wrong user.
+ bool isUidset = false;
+ const int sessionuid = qEnvironmentVariableIntValue("KDE_SESSION_UID", &isUidset);
+ if(isUidset && static_cast<uid_t>(sessionuid) != getuid()) {
+ qCWarning(KGLOBALACCELD) << "kglobalaccel running as wrong user, exiting.";
+ return 0;
+ }
+
KDBusService service(KDBusService::Unique);
app.setQuitOnLastWindowClosed(false);
--
GitLab