ubase

suckless linux base utils
git clone git://git.suckless.org/ubase
Log | Files | Refs | README | LICENSE

commit 4cd0b143801b1135abd2b7012cfed020710a4e68
parent e9bcdcc341d74f0abaa171703ac031b55e9020c0
Author: neeshy <neeshy@tfwno.gf>
Date:   Mon, 12 Feb 2024 21:03:12 -0500

su: don't set $PATH

Just /bin is too restrictive, and login shells set the path anyway via
the default profile. Also, carrying the path over for non-login shells
conforms to the behavior of util-linux's su.

Diffstat:
Mconfig.def.h | 1-
Msu.c | 5-----
2 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/config.def.h b/config.def.h @@ -1,6 +1,5 @@ /* See LICENSE file for copyright and license details. */ -#define ENV_SUPATH "/bin" #define ENV_PATH "/bin" #define PW_CIPHER "$6$" /* SHA-512 */ #undef UTMP_PATH diff --git a/su.c b/su.c @@ -9,7 +9,6 @@ #include <string.h> #include <unistd.h> -#include "config.h" #include "passwd.h" #include "util.h" @@ -103,10 +102,6 @@ main(int argc, char *argv[]) newargv[0] = shell; newargv[1] = NULL; } - if (strcmp(pw->pw_name, "root") == 0) - setenv("PATH", ENV_SUPATH, 1); - else - setenv("PATH", ENV_PATH, 1); execve(shell, newargv, environ); weprintf("execve %s:", shell); return (errno == ENOENT) ? 127 : 126;