diff options
author | Orion Poplawski <orion@cora.nwra.com> | 2015-02-13 13:32:17 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2015-02-13 13:32:17 +0100 |
commit | 415b20b6fbf562d4132fca90a00b6c32d94040ed (patch) | |
tree | af19b2e816b60b3d56ea9c9d69d6cc61c78d8e45 /nxcomp | |
parent | 456f887d95ca34974c1192a477dfca117827457f (diff) | |
download | nx-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.cpp | 3 |
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()); |