summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--login-utils/chsh.c2
-rw-r--r--login-utils/login.c2
-rw-r--r--login-utils/newgrp.c3
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)