[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.164 and 1.165

version 1.164, 2021/01/27 09:26:54 version 1.165, 2021/01/27 10:05:28
Line 622 
Line 622 
             (kex->peer = sshbuf_new()) == NULL ||              (kex->peer = sshbuf_new()) == NULL ||
             (kex->my = sshbuf_new()) == NULL ||              (kex->my = sshbuf_new()) == NULL ||
             (kex->client_version = sshbuf_new()) == NULL ||              (kex->client_version = sshbuf_new()) == NULL ||
             (kex->server_version = sshbuf_new()) == NULL) {              (kex->server_version = sshbuf_new()) == NULL ||
               (kex->session_id = sshbuf_new()) == NULL) {
                 kex_free(kex);                  kex_free(kex);
                 return NULL;                  return NULL;
         }          }
Line 680 
Line 681 
         sshbuf_free(kex->client_version);          sshbuf_free(kex->client_version);
         sshbuf_free(kex->server_version);          sshbuf_free(kex->server_version);
         sshbuf_free(kex->client_pub);          sshbuf_free(kex->client_pub);
         free(kex->session_id);          sshbuf_free(kex->session_id);
         free(kex->failed_choice);          free(kex->failed_choice);
         free(kex->hostkey_alg);          free(kex->hostkey_alg);
         free(kex->name);          free(kex->name);
Line 998 
Line 999 
             ssh_digest_update_buffer(hashctx, shared_secret) != 0 ||              ssh_digest_update_buffer(hashctx, shared_secret) != 0 ||
             ssh_digest_update(hashctx, hash, hashlen) != 0 ||              ssh_digest_update(hashctx, hash, hashlen) != 0 ||
             ssh_digest_update(hashctx, &c, 1) != 0 ||              ssh_digest_update(hashctx, &c, 1) != 0 ||
             ssh_digest_update(hashctx, kex->session_id,              ssh_digest_update_buffer(hashctx, kex->session_id) != 0 ||
             kex->session_id_len) != 0 ||  
             ssh_digest_final(hashctx, digest, mdsz) != 0) {              ssh_digest_final(hashctx, digest, mdsz) != 0) {
                 r = SSH_ERR_LIBCRYPTO_ERROR;                  r = SSH_ERR_LIBCRYPTO_ERROR;
                 error_f("KEX hash failed");                  error_f("KEX hash failed");
Line 1050 
Line 1050 
         int r;          int r;
   
         /* save initial hash as session id */          /* save initial hash as session id */
         if (kex->session_id == NULL) {          if ((kex->flags & KEX_INITIAL) != 0) {
                 kex->session_id_len = hashlen;                  if ((kex->session_id = sshbuf_new()) == NULL)
                 kex->session_id = malloc(kex->session_id_len);  
                 if (kex->session_id == NULL)  
                         return SSH_ERR_ALLOC_FAIL;                          return SSH_ERR_ALLOC_FAIL;
                 memcpy(kex->session_id, hash, kex->session_id_len);                  if ((r = sshbuf_put(kex->session_id, hash, hashlen)) != 0)
                           return r;
           } else if (sshbuf_len(kex->session_id) == 0) {
                   error_f("no session ID in rekex");
                           return SSH_ERR_INTERNAL_ERROR;
         }          }
         for (i = 0; i < NKEYS; i++) {          for (i = 0; i < NKEYS; i++) {
                 if ((r = derive_key(ssh, 'A'+i, kex->we_need, hash, hashlen,                  if ((r = derive_key(ssh, 'A'+i, kex->we_need, hash, hashlen,

Legend:
Removed from v.1.164  
changed lines
  Added in v.1.165