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

Diff for /src/usr.bin/ssh/kexgexs.c between version 1.24 and 1.25

version 1.24, 2015/01/26 06:10:03 version 1.25, 2015/04/13 02:04:08
Line 55 
Line 55 
 int  int
 kexgex_server(struct ssh *ssh)  kexgex_server(struct ssh *ssh)
 {  {
         ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST_OLD,  
             &input_kex_dh_gex_request);  
         ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST,          ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REQUEST,
             &input_kex_dh_gex_request);              &input_kex_dh_gex_request);
         debug("expecting SSH2_MSG_KEX_DH_GEX_REQUEST");          debug("expecting SSH2_MSG_KEX_DH_GEX_REQUEST");
Line 71 
Line 69 
         int r;          int r;
         u_int min = 0, max = 0, nbits = 0;          u_int min = 0, max = 0, nbits = 0;
   
         switch (type) {          debug("SSH2_MSG_KEX_DH_GEX_REQUEST received");
         case SSH2_MSG_KEX_DH_GEX_REQUEST:          if ((r = sshpkt_get_u32(ssh, &min)) != 0 ||
                 debug("SSH2_MSG_KEX_DH_GEX_REQUEST received");              (r = sshpkt_get_u32(ssh, &nbits)) != 0 ||
                 if ((r = sshpkt_get_u32(ssh, &min)) != 0 ||              (r = sshpkt_get_u32(ssh, &max)) != 0 ||
                     (r = sshpkt_get_u32(ssh, &nbits)) != 0 ||              (r = sshpkt_get_end(ssh)) != 0)
                     (r = sshpkt_get_u32(ssh, &max)) != 0 ||  
                     (r = sshpkt_get_end(ssh)) != 0)  
                         goto out;  
                 kex->nbits = nbits;  
                 kex->min = min;  
                 kex->max = max;  
                 min = MAX(DH_GRP_MIN, min);  
                 max = MIN(DH_GRP_MAX, max);  
                 nbits = MAX(DH_GRP_MIN, nbits);  
                 nbits = MIN(DH_GRP_MAX, nbits);  
                 break;  
         case SSH2_MSG_KEX_DH_GEX_REQUEST_OLD:  
                 debug("SSH2_MSG_KEX_DH_GEX_REQUEST_OLD received");  
                 if ((r = sshpkt_get_u32(ssh, &nbits)) != 0 ||  
                     (r = sshpkt_get_end(ssh)) != 0)  
                         goto out;  
                 kex->nbits = nbits;  
                 /* unused for old GEX */  
                 kex->min = min = DH_GRP_MIN;  
                 kex->max = max = DH_GRP_MAX;  
                 break;  
         default:  
                 r = SSH_ERR_INVALID_ARGUMENT;  
                 goto out;                  goto out;
         }          kex->nbits = nbits;
           kex->min = min;
           kex->max = max;
           min = MAX(DH_GRP_MIN, min);
           max = MIN(DH_GRP_MAX, max);
           nbits = MAX(DH_GRP_MIN, nbits);
           nbits = MIN(DH_GRP_MAX, nbits);
   
         if (kex->max < kex->min || kex->nbits < kex->min ||          if (kex->max < kex->min || kex->nbits < kex->min ||
             kex->max < kex->nbits) {              kex->max < kex->nbits) {
Line 125 
Line 106 
         /* Compute our exchange value in parallel with the client */          /* Compute our exchange value in parallel with the client */
         if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0)          if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0)
                 goto out;                  goto out;
   
         /* old KEX does not use min/max in kexgex_hash() */  
         if (type == SSH2_MSG_KEX_DH_GEX_REQUEST_OLD)  
                 kex->min = kex->max = -1;  
   
         debug("expecting SSH2_MSG_KEX_DH_GEX_INIT");          debug("expecting SSH2_MSG_KEX_DH_GEX_INIT");
         ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init);          ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_INIT, &input_kex_dh_gex_init);

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25