I think rjk meant `setpgid', not `setpgrp'.
[u/mdw/putty] / ssh.c
diff --git a/ssh.c b/ssh.c
index ee5a089..8c71e6d 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -5003,7 +5003,8 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
                     * Additionally, if we'd just tried password
                     * authentication, we should break out of this
                     * whole loop so as to go back to the username
-                    * prompt.
+                    * prompt (iff we're configured to allow
+                    * username change attempts).
                     */
                    if (s->type == AUTH_TYPE_NONE) {
                        /* do nothing */
@@ -5017,7 +5018,10 @@ static void do_ssh2_authconn(Ssh ssh, unsigned char *in, int inlen, int ispkt)
                    } else {
                        c_write_str(ssh, "Access denied\r\n");
                        logevent("Access denied");
-                       if (s->type == AUTH_TYPE_PASSWORD) {
+                       if (s->type == AUTH_TYPE_PASSWORD &&
+                           ssh->cfg.change_username) {
+                           /* XXX perhaps we should allow
+                            * keyboard-interactive to do this too? */
                            s->we_are_in = FALSE;
                            break;
                        }