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

Diff for /src/usr.bin/ssh/kex.c between version 1.104 and 1.105

version 1.104, 2015/01/26 06:10:03 version 1.105, 2015/01/30 00:22:25
Line 766 
Line 766 
 derive_ssh1_session_id(BIGNUM *host_modulus, BIGNUM *server_modulus,  derive_ssh1_session_id(BIGNUM *host_modulus, BIGNUM *server_modulus,
     u_int8_t cookie[8], u_int8_t id[16])      u_int8_t cookie[8], u_int8_t id[16])
 {  {
         u_int8_t nbuf[2048], obuf[SSH_DIGEST_MAX_LENGTH];          u_int8_t hbuf[2048], sbuf[2048], obuf[SSH_DIGEST_MAX_LENGTH];
         struct ssh_digest_ctx *hashctx = NULL;          struct ssh_digest_ctx *hashctx = NULL;
         size_t len;          size_t hlen, slen;
         int r;          int r;
   
         len = BN_num_bytes(host_modulus);          hlen = BN_num_bytes(host_modulus);
         if (len < (512 / 8) || (u_int)len > sizeof(nbuf))          slen = BN_num_bytes(server_modulus);
           if (hlen < (512 / 8) || (u_int)hlen > sizeof(hbuf) ||
               slen < (512 / 8) || (u_int)slen > sizeof(sbuf))
                 return SSH_ERR_KEY_BITS_MISMATCH;                  return SSH_ERR_KEY_BITS_MISMATCH;
         if (BN_bn2bin(host_modulus, nbuf) <= 0 ||          if (BN_bn2bin(host_modulus, hbuf) <= 0 ||
             (hashctx = ssh_digest_start(SSH_DIGEST_MD5)) == NULL ||              BN_bn2bin(server_modulus, sbuf) <= 0) {
             ssh_digest_update(hashctx, nbuf, len) != 0 ||                  r = SSH_ERR_LIBCRYPTO_ERROR;
                   goto out;
           }
           if ((hashctx = ssh_digest_start(SSH_DIGEST_MD5)) == NULL) {
                   r = SSH_ERR_ALLOC_FAIL;
                   goto out;
           }
           if (ssh_digest_update(hashctx, hbuf, hlen) != 0 ||
               ssh_digest_update(hashctx, sbuf, slen) != 0 ||
             ssh_digest_update(hashctx, cookie, 8) != 0 ||              ssh_digest_update(hashctx, cookie, 8) != 0 ||
             ssh_digest_final(hashctx, obuf, sizeof(obuf)) != 0) {              ssh_digest_final(hashctx, obuf, sizeof(obuf)) != 0) {
                 r = SSH_ERR_LIBCRYPTO_ERROR;                  r = SSH_ERR_LIBCRYPTO_ERROR;
Line 786 
Line 796 
         r = 0;          r = 0;
  out:   out:
         ssh_digest_free(hashctx);          ssh_digest_free(hashctx);
         explicit_bzero(nbuf, sizeof(nbuf));          explicit_bzero(hbuf, sizeof(hbuf));
           explicit_bzero(sbuf, sizeof(sbuf));
         explicit_bzero(obuf, sizeof(obuf));          explicit_bzero(obuf, sizeof(obuf));
         return r;          return r;
 }  }

Legend:
Removed from v.1.104  
changed lines
  Added in v.1.105