Introduction
Introduction Statistics Contact Development Disclaimer Help
su: fix setting argv0 - ubase - suckless linux base utils
git clone git://git.suckless.org/ubase
Log
Files
Refs
README
LICENSE
---
commit cf9e26d7fa2d13ede8ce2830819e311fc0dd83b9
parent 8f5a0c32362dc447ab066f9c3ad7802153a6bb40
Author: neeshy <[email protected]>
Date: Mon, 12 Feb 2024 16:25:50 -0500
su: fix setting argv0
argv0 was being set to the user's login shell even when -p was
specified. Only populate newargv once the shell is properly determined.
Diffstat:
M su.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
---
diff --git a/su.c b/su.c
@@ -75,9 +75,6 @@ main(int argc, char *argv[])
shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell;
if (lflag) {
- newargv[0] = shell;
- newargv[1] = "-l";
- newargv[2] = NULL;
term = getenv("TERM");
clearenv();
setenv("HOME", pw->pw_dir, 1);
@@ -87,9 +84,10 @@ main(int argc, char *argv[])
setenv("TERM", term ? term : "linux", 1);
if (chdir(pw->pw_dir) < 0)
eprintf("chdir %s:", pw->pw_dir);
- } else {
newargv[0] = shell;
- newargv[1] = NULL;
+ newargv[1] = "-l";
+ newargv[2] = NULL;
+ } else {
if (pflag) {
shell = getenv("SHELL");
} else {
@@ -100,6 +98,8 @@ main(int argc, char *argv[])
setenv("LOGNAME", pw->pw_name, 1);
}
}
+ newargv[0] = shell;
+ newargv[1] = NULL;
}
if (strcmp(pw->pw_name, "root") == 0)
setenv("PATH", ENV_SUPATH, 1);
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.