diff options
-rw-r--r-- | login-utils/chsh.c | 2 | ||||
-rw-r--r-- | login-utils/login.c | 2 | ||||
-rw-r--r-- | login-utils/newgrp.c | 3 |
3 files changed, 4 insertions, 3 deletions
diff --git a/login-utils/chsh.c b/login-utils/chsh.c index 3aa4f350b..5481f7c38 100644 --- a/login-utils/chsh.c +++ b/login-utils/chsh.c @@ -185,7 +185,7 @@ int main(int argc, char **argv) if (check_shell(shell) < 0) return EXIT_FAILURE; - if (!strcmp(pw->pw_shell, shell)) + if (strcmp(oldshell, shell) == 0) errx(EXIT_SUCCESS, _("Shell not changed.")); pw->pw_shell = shell; if (setpwnam(pw) < 0) { diff --git a/login-utils/login.c b/login-utils/login.c index 5ff8802d1..fb87e6076 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -1363,7 +1363,7 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } - if (*pwd->pw_shell == '\0') + if (pwd->pw_shell == NULL || *pwd->pw_shell == '\0') pwd->pw_shell = _PATH_BSHELL; init_environ(&cxt); /* init $HOME, $TERM ... */ diff --git a/login-utils/newgrp.c b/login-utils/newgrp.c index 85cba7752..983993416 100644 --- a/login-utils/newgrp.c +++ b/login-utils/newgrp.c @@ -138,7 +138,8 @@ int main(int argc, char *argv[]) if (!(pw_entry = getpwuid(getuid()))) err(EXIT_FAILURE, _("who are you?")); - shell = (pw_entry->pw_shell[0] ? pw_entry->pw_shell : _PATH_BSHELL); + shell = (pw_entry->pw_shell && *pw_entry->pw_shell ? + pw_entry->pw_shell : _PATH_BSHELL); if (argc < 2) { if (setgid(pw_entry->pw_gid) < 0) |