[PATCH 3/7] use ENV_PATH resp ENV_SUPATH to be consistent with login

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Signed-off-by: Ludwig Nussel <ludwig.nussel@xxxxxxx>
---
 login-utils/su.c |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/login-utils/su.c b/login-utils/su.c
index b1fca5f..22b9ccc 100644
--- a/login-utils/su.c
+++ b/login-utils/su.c
@@ -476,6 +476,20 @@ clearsbin (const char *const path)
   return ret;
 }
 
+static void
+set_path(const struct passwd* pw)
+{
+  int r;
+  if (pw->pw_uid)
+    r = logindefs_setenv("PATH", "ENV_PATH", _PATH_DEFPATH);
+
+  else if ((r = logindefs_setenv("PATH", "ENV_ROOTPATH", NULL)) != 0)
+    r = logindefs_setenv("PATH", "ENV_SUPATH", _PATH_DEFPATH_ROOT);
+
+  if (r != 0)
+    err (EXIT_FAILURE,  _("failed to set PATH"));
+}
+
 /* Update `environ' for the new shell based on PW, with SHELL being
    the value for the SHELL environment variable.  */
 
@@ -497,9 +511,7 @@ modify_environment (const struct passwd *pw, const char *shell)
       xsetenv ("SHELL", shell);
       xsetenv ("USER", pw->pw_name);
       xsetenv ("LOGNAME", pw->pw_name);
-      xsetenv ("PATH", (pw->pw_uid
-			? getlogindefs_str ("PATH", _PATH_DEFPATH)
-			: getlogindefs_str ("SUPATH", _PATH_DEFPATH_ROOT)));
+      set_path(pw);
     }
   else
     {
@@ -510,11 +522,7 @@ modify_environment (const struct passwd *pw, const char *shell)
           xsetenv ("HOME", pw->pw_dir);
           xsetenv ("SHELL", shell);
 	  if (getlogindefs_bool ("ALWAYS_SET_PATH", 0))
-	    xsetenv ("PATH", (pw->pw_uid
-			      ? getlogindefs_str ("PATH",
-					    _PATH_DEFPATH)
-			      : getlogindefs_str ("SUPATH",
-					    _PATH_DEFPATH_ROOT)));
+	    set_path(pw);
 	  else
 	    {
 	      char const *path = getenv ("PATH");
-- 
1.7.7

--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux