From: Karel Zak Date: Thu, 6 Feb 2014 13:14:50 +0000 (+0100) Subject: nsenter: fix set{gid,uid} order,drop supplementary groups X-Git-Tag: v2.24.2~89 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ab908b41b12c83af18e1e349d4ef2f38a4435b8;p=thirdparty%2Futil-linux.git nsenter: fix set{gid,uid} order,drop supplementary groups .. always, always setgid() before setuid()! Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1061751 Signed-off-by: Karel Zak --- diff --git a/sys-utils/nsenter.c b/sys-utils/nsenter.c index 13f729e53b..dfb1a3b516 100644 --- a/sys-utils/nsenter.c +++ b/sys-utils/nsenter.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "strutils.h" #include "nls.h" @@ -328,10 +329,12 @@ int main(int argc, char *argv[]) continue_as_child(); if (namespaces & CLONE_NEWUSER) { - if (setuid(uid) < 0) - err(EXIT_FAILURE, _("setuid failed")); + if (setgroups(0, NULL)) /* drop supplementary groups */ + err(EXIT_FAILURE, _("setgroups failed")); if (setgid(gid) < 0) err(EXIT_FAILURE, _("setgid failed")); + if (setuid(uid) < 0) + err(EXIT_FAILURE, _("setuid failed")); } if (optind < argc) {