From 35a15670eaa512dd3ea64179d8e89df128d69db4 Mon Sep 17 00:00:00 2001 From: project-repo Date: Fri, 29 May 2020 16:13:52 +0200 Subject: [PATCH] Fix permission dropping --- cagebreak.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cagebreak.c b/cagebreak.c index f908117..0591591 100644 --- a/cagebreak.c +++ b/cagebreak.c @@ -88,13 +88,14 @@ sig_chld_handler(int signal) { static bool drop_permissions(void) { if(getuid() != geteuid() || getgid() != getegid()) { - if(setuid(getuid()) != 0 || setgid(getgid()) != 0) { + // Set gid before uid + if(setgid(getgid()) != 0 || setuid(getuid()) != 0) { wlr_log(WLR_ERROR, "Unable to drop root, refusing to start"); return false; } } - if(setuid(0) != -1) { + if(setgid(0) != -1 || setuid(0) != -1) { wlr_log(WLR_ERROR, "Unable to drop root (we shouldn't be able to " "restore it after setuid), refusing to start"); return false;