From c345d8e94589e3c74a9fac40f440affbc359c8d1 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sat, 14 Oct 2006 11:47:02 +0000 Subject: sulogin: add support for $SUSHELL & $sushell --- loginutils/sulogin.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'loginutils/sulogin.c') diff --git a/loginutils/sulogin.c b/loginutils/sulogin.c index 679439544..c07264e7b 100644 --- a/loginutils/sulogin.c +++ b/loginutils/sulogin.c @@ -42,6 +42,7 @@ int sulogin_main(int argc, char **argv) const char * const *p; struct passwd *pwd; struct spwd *spwd; + const char *shell; logmode = LOGMODE_BOTH; openlog(applet_name, 0, LOG_AUTH); @@ -69,12 +70,14 @@ int sulogin_main(int argc, char **argv) signal(SIGALRM, catchalarm); - if (!(pwd = getpwuid(0))) { + pwd = getpwuid(0); + if (!pwd) { goto auth_error; } if (ENABLE_FEATURE_SHADOWPASSWDS) { - if (!(spwd = getspnam(pwd->pw_name))) { + spwd = getspnam(pwd->pw_name); + if (!spwd) { goto auth_error; } pwd->pw_passwd = spwd->sp_pwdp; @@ -103,9 +106,16 @@ int sulogin_main(int argc, char **argv) USE_SELINUX(renew_current_security_context()); - run_shell(pwd->pw_shell, 1, 0, 0); + shell = getenv("SUSHELL"); + if (!shell) shell = getenv("sushell"); + if (!shell) { + shell = "/bin/sh"; + if (pwd->pw_shell[0]) + shell = pwd->pw_shell; + } + run_shell(shell, 1, 0, 0); /* never returns */ auth_error: - bb_error_msg_and_die("no password entry for `root'"); + bb_error_msg_and_die("no password entry for 'root'"); } -- cgit v1.2.3