aboutsummaryrefslogtreecommitdiff
path: root/nxcomp
diff options
context:
space:
mode:
authorOrion Poplawski <orion@cora.nwra.com>2015-02-13 13:32:17 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-13 13:32:17 +0100
commit415b20b6fbf562d4132fca90a00b6c32d94040ed (patch)
treeaf19b2e816b60b3d56ea9c9d69d6cc61c78d8e45 /nxcomp
parent456f887d95ca34974c1192a477dfca117827457f (diff)
downloadnx-libs-415b20b6fbf562d4132fca90a00b6c32d94040ed.tar.gz
nx-libs-415b20b6fbf562d4132fca90a00b6c32d94040ed.tar.bz2
nx-libs-415b20b6fbf562d4132fca90a00b6c32d94040ed.zip
Be compliant with POS36-C: Observe correct revocation order while relinquishing privileges (602_nx-X11_initgroups.full.patch).
The Fedora review of NX (redistributed) caught the following rpmlint issue: This executable is calling setuid and setgid without setgroups or initgroups. There is a high probability this mean it didn't relinquish all groups, and this would be a potential security issue to be fixed. Seek POS36-C on the web for details about the problem. Ref POS36-C: https://www.securecoding.cert.org/confluence/display/seccode/POS36-C.+Observe+correct+revocation+order+while+relinquishing+privileges This patch adds initgroups() calls to the code to initialize the supplemental group list.
Diffstat (limited to 'nxcomp')
-rw-r--r--nxcomp/Pipe.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/nxcomp/Pipe.cpp b/nxcomp/Pipe.cpp
index 7238d0c73..aacbbaeb3 100644
--- a/nxcomp/Pipe.cpp
+++ b/nxcomp/Pipe.cpp
@@ -21,6 +21,7 @@
#include <pwd.h>
#include <sys/types.h>
#include <sys/wait.h>
+#include <grp.h>
#include "Pipe.h"
#include "Misc.h"
@@ -234,6 +235,8 @@ FILE *Popen(char * const parameters[], const char *type)
// Child.
//
+ struct passwd *pwent = getpwuid(getuid());
+ if (pwent) initgroups(pwent->pw_name,getgid());
setgid(getgid());
setuid(getuid());