Signed-off-by: Karel Zak <kzak@redhat.com>
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) {
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 ... */
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)