summaryrefslogtreecommitdiffstats
path: root/opensuse/core/tdelibs/allow-man-setgid.diff
blob: 51a47d720c62435f27463e97647c153c62de4c75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Index: kdecore/kapplication.cpp
===================================================================
--- kdecore/kapplication.cpp.orig
+++ kdecore/kapplication.cpp
@@ -87,6 +87,8 @@
 #include <sys/stat.h>
 #endif
 #include <sys/wait.h>
+#include <grp.h>
+#include <sys/types.h>
 
 #ifndef Q_WS_WIN
 #include "kwin.h"
@@ -776,10 +778,15 @@ void KApplication::init(bool GUIenabled)
 {
   d->guiEnabled = GUIenabled;
   if ((getuid() != geteuid()) ||
-      (getgid() != getegid()))
+      (getgid() != getegid()) )
   {
-     fprintf(stderr, "The KDE libraries are not designed to run with suid privileges.\n");
-     ::exit(127);
+     // man permissions are not exploitable and better than 
+     // world writable directories
+     struct group *man = getgrnam("man");
+     if ( !man || man->gr_gid != getegid() ){
+       fprintf(stderr, "The KDE libraries are not designed to run with suid privileges.\n");
+       ::exit(127);
+     }
   }
 
   KProcessController::ref();