]> andersk Git - openssh.git/commitdiff
- markus@cvs.openbsd.org 2001/08/31 11:46:39
authormouring <mouring>
Wed, 12 Sep 2001 18:29:00 +0000 (18:29 +0000)
committermouring <mouring>
Wed, 12 Sep 2001 18:29:00 +0000 (18:29 +0000)
     [sshconnect2.c]
     disable kbd-interactive if we don't get
     SSH2_MSG_USERAUTH_INFO_REQUEST messages

ChangeLog
sshconnect2.c

index d0a4351015a9ee4e7b78f8508718a3276e03cd29..8182235571bb7b4be6cff37e1b496a9370379a7e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
    - markus@cvs.openbsd.org 2001/08/30 22:22:32
      [ssh-keyscan.c]
      do not pass pointers to longjmp; fix from wayne@blorf.net
+   - markus@cvs.openbsd.org 2001/08/31 11:46:39
+     [sshconnect2.c]
+     disable kbd-interactive if we don't get 
+     SSH2_MSG_USERAUTH_INFO_REQUEST messages
 
 20010815
  - (bal) Fixed stray code in readconf.c that went in by mistake.
index a86d0036b70734ec7a3e491d5b89616ea4cf9a60..a7beb3600eb28dc1fba8c26c1e8c02007a3b4261 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshconnect2.c,v 1.81 2001/07/23 09:06:28 markus Exp $");
+RCSID("$OpenBSD: sshconnect2.c,v 1.82 2001/08/31 11:46:39 markus Exp $");
 
 #include <openssl/bn.h>
 #include <openssl/md5.h>
@@ -164,6 +164,8 @@ struct Authctxt {
        /* hostbased */
        Key **keys;
        int nkeys;
+       /* kbd-interactive */
+       int info_req_seen;
 };
 struct Authmethod {
        char    *name;          /* string to compare against server's list */
@@ -252,6 +254,7 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
                options.preferred_authentications = authmethods_get();
 
        /* setup authentication context */
+       memset(&authctxt, 0, sizeof(authctxt));
        authctxt.agent = ssh_get_authentication_connection();
        authctxt.server_user = server_user;
        authctxt.local_user = local_user;
@@ -262,6 +265,7 @@ ssh_userauth2(const char *local_user, const char *server_user, char *host,
        authctxt.authlist = NULL;
        authctxt.keys = keys;
        authctxt.nkeys = nkeys;
+       authctxt.info_req_seen = 0;
        if (authctxt.method == NULL)
                fatal("ssh_userauth2: internal error: cannot send userauth none request");
 
@@ -739,6 +743,12 @@ userauth_kbdint(Authctxt *authctxt)
 
        if (attempt++ >= options.number_of_password_prompts)
                return 0;
+       /* disable if no SSH2_MSG_USERAUTH_INFO_REQUEST has been seen */
+       if (attempt > 1 && !authctxt->info_req_seen) {
+               debug3("userauth_kbdint: disable: no info_req_seen");
+               dispatch_set(SSH2_MSG_USERAUTH_INFO_REQUEST, NULL);
+               return 0;
+       }
 
        debug2("userauth_kbdint");
        packet_start(SSH2_MSG_USERAUTH_REQUEST);
@@ -770,6 +780,8 @@ input_userauth_info_req(int type, int plen, void *ctxt)
        if (authctxt == NULL)
                fatal("input_userauth_info_req: no authentication context");
 
+       authctxt->info_req_seen = 1;
+
        name = packet_get_string(NULL);
        inst = packet_get_string(NULL);
        lang = packet_get_string(NULL);
This page took 0.050608 seconds and 5 git commands to generate.