mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 03:17:34 +00:00
Userland: Minor tweaks in /bin/su
This commit is contained in:
parent
920e8e58ed
commit
b30773638e
1 changed files with 5 additions and 14 deletions
|
@ -8,12 +8,9 @@ extern "C" int main(int, char**);
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
uid_t uid;
|
uid_t uid = 0;
|
||||||
gid_t gid;
|
gid_t gid = 0;
|
||||||
if (argc == 1) {
|
if (argc > 1) {
|
||||||
uid = 0;
|
|
||||||
gid = 0;
|
|
||||||
} else {
|
|
||||||
auto* pwd = getpwnam(argv[1]);
|
auto* pwd = getpwnam(argv[1]);
|
||||||
if (!pwd) {
|
if (!pwd) {
|
||||||
fprintf(stderr, "No such user: %s\n", argv[1]);
|
fprintf(stderr, "No such user: %s\n", argv[1]);
|
||||||
|
@ -22,23 +19,17 @@ int main(int argc, char** argv)
|
||||||
uid = pwd->pw_uid;
|
uid = pwd->pw_uid;
|
||||||
gid = pwd->pw_gid;
|
gid = pwd->pw_gid;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rc = setgid(uid);
|
int rc = setgid(uid);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
perror("setgid");
|
perror("setgid");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = setuid(gid);
|
rc = setuid(gid);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
perror("setuid");
|
perror("setuid");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = execl("/bin/sh", "sh", nullptr);
|
rc = execl("/bin/sh", "sh", nullptr);
|
||||||
if (rc < 0) {
|
perror("execl");
|
||||||
perror("execl");
|
return 1;
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue