]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
caps: check uid and euid 2829/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 8 Feb 2019 14:11:46 +0000 (15:11 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 8 Feb 2019 14:11:46 +0000 (15:11 +0100)
When we are running inside of a user namespace getuid() will return a
non-zero uid. So let's check euid as well to make sure we correctly drop
capabilities

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/caps.c

index 86baee26190310569b9b2985da157502d034022a..1a6211a485053148166bd1082633b6c59f2d4b2f 100644 (file)
@@ -136,8 +136,7 @@ int lxc_ambient_caps_up(void)
        int last_cap = CAP_LAST_CAP;
        char *cap_names = NULL;
 
-       /* When we are root, we don't want to play with capabilities. */
-       if (!getuid())
+       if (!getuid() || geteuid())
                return 0;
 
        caps = cap_get_proc();
@@ -204,8 +203,7 @@ int lxc_ambient_caps_down(void)
        cap_t caps;
        cap_value_t cap;
 
-       /* When we are root, we don't want to play with capabilities. */
-       if (!getuid())
+       if (!getuid() || geteuid())
                return 0;
 
        ret = prctl(PR_CAP_AMBIENT, prctl_arg(PR_CAP_AMBIENT_CLEAR_ALL),