[BACK]Return to ssh-keyscan.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/ssh-keyscan.c between version 1.111 and 1.112

version 1.111, 2017/04/30 23:13:25 version 1.112, 2017/04/30 23:18:44
Line 48 
Line 48 
   
 int ssh_port = SSH_DEFAULT_PORT;  int ssh_port = SSH_DEFAULT_PORT;
   
 #define KT_RSA1         1  #define KT_DSA          (1)
 #define KT_DSA          2  #define KT_RSA          (1<<1)
 #define KT_RSA          4  #define KT_ECDSA        (1<<2)
 #define KT_ECDSA        8  #define KT_ED25519      (1<<3)
 #define KT_ED25519      16  
   
   #define KT_MIN          KT_DSA
   #define KT_MAX          KT_ED25519
   
 int get_cert = 0;  int get_cert = 0;
 int get_keytypes = KT_RSA|KT_ECDSA|KT_ED25519;  int get_keytypes = KT_RSA|KT_ECDSA|KT_ED25519;
   
Line 86 
Line 88 
         int c_plen;             /* Packet length field for ssh packet */          int c_plen;             /* Packet length field for ssh packet */
         int c_len;              /* Total bytes which must be read. */          int c_len;              /* Total bytes which must be read. */
         int c_off;              /* Length of data read so far. */          int c_off;              /* Length of data read so far. */
         int c_keytype;          /* Only one of KT_RSA1, KT_DSA, or KT_RSA */          int c_keytype;          /* Only one of KT_* */
         sig_atomic_t c_done;    /* SSH2 done */          sig_atomic_t c_done;    /* SSH2 done */
         char *c_namebase;       /* Address to free for c_name and c_namelist */          char *c_namebase;       /* Address to free for c_name and c_namelist */
         char *c_name;           /* Hostname of connection for errors */          char *c_name;           /* Hostname of connection for errors */
Line 415 
Line 417 
         size_t bufsiz;          size_t bufsiz;
         con *c = &fdcon[s];          con *c = &fdcon[s];
   
           /* send client banner */
           n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n",
               PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2);
           if (n < 0 || (size_t)n >= sizeof(buf)) {
                   error("snprintf: buffer too small");
                   confree(s);
                   return;
           }
           if (atomicio(vwrite, s, buf, n) != (size_t)n) {
                   error("write (%s): %s", c->c_name, strerror(errno));
                   confree(s);
                   return;
           }
   
         for (;;) {          for (;;) {
                 memset(buf, '\0', sizeof(buf));                  memset(buf, '\0', sizeof(buf));
                 bufsiz = sizeof(buf);                  bufsiz = sizeof(buf);
Line 457 
Line 473 
                 c->c_ssh->compat = compat_datafellows(remote_version);                  c->c_ssh->compat = compat_datafellows(remote_version);
         else          else
                 c->c_ssh->compat = 0;                  c->c_ssh->compat = 0;
         if (c->c_keytype != KT_RSA1) {          if (!ssh2_capable(remote_major, remote_minor)) {
                 if (!ssh2_capable(remote_major, remote_minor)) {                  debug("%s doesn't support ssh2", c->c_name);
                         debug("%s doesn't support ssh2", c->c_name);  
                         confree(s);  
                         return;  
                 }  
         } else if (remote_major != 1) {  
                 debug("%s doesn't support ssh1", c->c_name);  
                 confree(s);                  confree(s);
                 return;                  return;
         }          }
         fprintf(stderr, "# %s:%d %s\n", c->c_name, ssh_port, chop(buf));          fprintf(stderr, "# %s:%d %s\n", c->c_name, ssh_port, chop(buf));
         n = snprintf(buf, sizeof buf, "SSH-%d.%d-OpenSSH-keyscan\r\n",          keygrab_ssh2(c);
             c->c_keytype == KT_RSA1? PROTOCOL_MAJOR_1 : PROTOCOL_MAJOR_2,          confree(s);
             c->c_keytype == KT_RSA1? PROTOCOL_MINOR_1 : PROTOCOL_MINOR_2);  
         if (n < 0 || (size_t)n >= sizeof(buf)) {  
                 error("snprintf: buffer too small");  
                 confree(s);  
                 return;  
         }  
         if (atomicio(vwrite, s, buf, n) != (size_t)n) {  
                 error("write (%s): %s", c->c_name, strerror(errno));  
                 confree(s);  
                 return;  
         }  
         if (c->c_keytype != KT_RSA1) {  
                 keygrab_ssh2(c);  
                 confree(s);  
                 return;  
         }  
         c->c_status = CS_SIZE;  
         contouch(s);  
 }  }
   
 static void  static void
Line 586 
Line 578 
   
         if (name == NULL)          if (name == NULL)
                 return;                  return;
         for (j = KT_RSA1; j <= KT_ED25519; j *= 2) {          for (j = KT_MIN; j <= KT_MAX; j *= 2) {
                 if (get_keytypes & j) {                  if (get_keytypes & j) {
                         while (ncon >= MAXCON)                          while (ncon >= MAXCON)
                                 conloop();                                  conloop();

Legend:
Removed from v.1.111  
changed lines
  Added in v.1.112