From ab034fbf09460c2fd933ea47c9085d09b8a1ab27 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 1 Sep 2011 10:27:42 +0200 Subject: [PATCH] Reformat setuid-ing code in startup_child() New code does the same as old one, but is more readable (I hope). * strace.c (startup_child): Reformat setuid-ing code. Signed-off-by: Denys Vlasenko --- strace.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/strace.c b/strace.c index afb5d29e..fcdae0bb 100644 --- a/strace.c +++ b/strace.c @@ -652,7 +652,7 @@ startup_child(char **argv) kill(pid, SIGSTOP); } - if (username != NULL || geteuid() == 0) { + if (username != NULL) { uid_t run_euid = run_uid; gid_t run_egid = run_gid; @@ -660,24 +660,21 @@ startup_child(char **argv) run_euid = statbuf.st_uid; if (statbuf.st_mode & S_ISGID) run_egid = statbuf.st_gid; - /* * It is important to set groups before we * lose privileges on setuid. */ - if (username != NULL) { - if (initgroups(username, run_gid) < 0) { - perror_msg_and_die("initgroups"); - } - if (setregid(run_gid, run_egid) < 0) { - perror_msg_and_die("setregid"); - } - if (setreuid(run_uid, run_euid) < 0) { - perror_msg_and_die("setreuid"); - } + if (initgroups(username, run_gid) < 0) { + perror_msg_and_die("initgroups"); + } + if (setregid(run_gid, run_egid) < 0) { + perror_msg_and_die("setregid"); + } + if (setreuid(run_uid, run_euid) < 0) { + perror_msg_and_die("setreuid"); } } - else + else if (geteuid() != 0) setreuid(run_uid, run_uid); if (!daemonized_tracer) {