su: don't set $PATH - ubase - suckless linux base utils
HTML git clone git://git.suckless.org/ubase
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit 4cd0b143801b1135abd2b7012cfed020710a4e68
DIR parent e9bcdcc341d74f0abaa171703ac031b55e9020c0
HTML 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:
M config.def.h | 1 -
M su.c | 5 -----
2 files changed, 0 insertions(+), 6 deletions(-)
---
DIR 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
DIR 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;