]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
login: (and chsh) make pw_shell usage more robust
authorKarel Zak <kzak@redhat.com>
Thu, 2 Feb 2012 13:13:45 +0000 (14:13 +0100)
committerKarel Zak <kzak@redhat.com>
Thu, 2 Feb 2012 13:13:45 +0000 (14:13 +0100)
Signed-off-by: Karel Zak <kzak@redhat.com>
login-utils/chsh.c
login-utils/login.c
login-utils/newgrp.c

index 3aa4f350b8d4ab7b046aeb3ebd980687a2324d58..5481f7c387e9d601c6207f1c159d5f6fc98312e5 100644 (file)
@@ -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) {
index 5ff8802d1e36b8e2e831f33cc5950a5c36590d3a..fb87e6076c3b5474d10d9cb5b09b61300a0bf46d 100644 (file)
@@ -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 ... */
index 85cba7752a40ec75f276dc53d26920f12ba8bee5..98399341695f0890a4127b7b7a73088e382dad8c 100644 (file)
@@ -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)