From 4cd0b143801b1135abd2b7012cfed020710a4e68 Mon Sep 17 00:00:00 2001 From: neeshy Date: Mon, 12 Feb 2024 21:03:12 -0500 Subject: [PATCH] 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. --- config.def.h | 1 - su.c | 5 ----- 2 files changed, 6 deletions(-) diff --git a/config.def.h b/config.def.h index 577833e..257cfac 100644 --- 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 index 0f16637..eb8bea7 100644 --- a/su.c +++ b/su.c @@ -9,7 +9,6 @@ #include #include -#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;