From b30773638e6fb6ac1741ce3d7eed228f5f70bf51 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 21 Feb 2019 23:49:16 +0100 Subject: [PATCH] Userland: Minor tweaks in /bin/su --- Userland/su.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/Userland/su.cpp b/Userland/su.cpp index 51ee60729b..354d97aa76 100644 --- a/Userland/su.cpp +++ b/Userland/su.cpp @@ -8,12 +8,9 @@ extern "C" int main(int, char**); int main(int argc, char** argv) { - uid_t uid; - gid_t gid; - if (argc == 1) { - uid = 0; - gid = 0; - } else { + uid_t uid = 0; + gid_t gid = 0; + if (argc > 1) { auto* pwd = getpwnam(argv[1]); if (!pwd) { fprintf(stderr, "No such user: %s\n", argv[1]); @@ -22,23 +19,17 @@ int main(int argc, char** argv) uid = pwd->pw_uid; gid = pwd->pw_gid; } - int rc = setgid(uid); if (rc < 0) { perror("setgid"); return 1; } - rc = setuid(gid); if (rc < 0) { perror("setuid"); return 1; } - rc = execl("/bin/sh", "sh", nullptr); - if (rc < 0) { - perror("execl"); - return 1; - } - return 0; + perror("execl"); + return 1; }