From: nekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7> Date: Thu, 18 Mar 2010 23:21:00 +0000 (+0000) Subject: * src/chsh.c: Even for root, warn if an invalid shell is X-Git-Tag: 4.1.5~298 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5e38d92a95e26384ea1a53a508f50c45429e1dd4;p=shadow * src/chsh.c: Even for root, warn if an invalid shell is specified. --- diff --git a/ChangeLog b/ChangeLog index ea4f40aa..7c6d8776 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-03-18 Nicolas François <nicolas.francois@centraliens.net> + + * src/chsh.c: Even for root, warn if an invalid shell is + specified. + 2010-03-18 Nicolas François <nicolas.francois@centraliens.net> * man/limits.5.xml: Document the selection of the limits when diff --git a/src/chsh.c b/src/chsh.c index c0dc948c..21d3b8b4 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -535,10 +535,17 @@ int main (int argc, char **argv) if ( !amroot && ( is_restricted_shell (loginsh) || (access (loginsh, X_OK) != 0))) { - fprintf (stderr, _("%s: %s is an invalid shell.\n"), Prog, loginsh); + fprintf (stderr, _("%s: %s is an invalid shell\n"), Prog, loginsh); fail_exit (1); } + /* Even for root, warn if an invalid shell is specified. */ + if (access (loginsh, F_OK) != 0) { + fprintf (stderr, _("%s: Warning: %s does not exist\n"), Prog, loginsh); + } else if (access (loginsh, X_OK) != 0) { + fprintf (stderr, _("%s: Warning: %s is not executable\n"), Prog, loginsh); + } + update_shell (user, loginsh); SYSLOG ((LOG_INFO, "changed user '%s' shell to '%s'", user, loginsh));