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

Diff for /src/usr.bin/ssh/mac.c between version 1.23 and 1.24

version 1.23, 2013/05/17 00:13:13 version 1.24, 2013/06/03 00:03:18
Line 165 
Line 165 
 u_char *  u_char *
 mac_compute(Mac *mac, u_int32_t seqno, u_char *data, int datalen)  mac_compute(Mac *mac, u_int32_t seqno, u_char *data, int datalen)
 {  {
         static u_char m[EVP_MAX_MD_SIZE];          static union {
                   u_char m[EVP_MAX_MD_SIZE];
                   u_int64_t for_align;
           } u;
         u_char b[4], nonce[8];          u_char b[4], nonce[8];
   
         if (mac->mac_len > sizeof(m))          if (mac->mac_len > sizeof(u))
                 fatal("mac_compute: mac too long %u %lu",                  fatal("mac_compute: mac too long %u %lu",
                     mac->mac_len, (u_long)sizeof(m));                      mac->mac_len, (u_long)sizeof(u));
   
         switch (mac->type) {          switch (mac->type) {
         case SSH_EVP:          case SSH_EVP:
Line 179 
Line 182 
                 HMAC_Init(&mac->evp_ctx, NULL, 0, NULL);                  HMAC_Init(&mac->evp_ctx, NULL, 0, NULL);
                 HMAC_Update(&mac->evp_ctx, b, sizeof(b));                  HMAC_Update(&mac->evp_ctx, b, sizeof(b));
                 HMAC_Update(&mac->evp_ctx, data, datalen);                  HMAC_Update(&mac->evp_ctx, data, datalen);
                 HMAC_Final(&mac->evp_ctx, m, NULL);                  HMAC_Final(&mac->evp_ctx, u.m, NULL);
                 break;                  break;
         case SSH_UMAC:          case SSH_UMAC:
                 put_u64(nonce, seqno);                  put_u64(nonce, seqno);
                 umac_update(mac->umac_ctx, data, datalen);                  umac_update(mac->umac_ctx, data, datalen);
                 umac_final(mac->umac_ctx, m, nonce);                  umac_final(mac->umac_ctx, u.m, nonce);
                 break;                  break;
         case SSH_UMAC128:          case SSH_UMAC128:
                 put_u64(nonce, seqno);                  put_u64(nonce, seqno);
                 umac128_update(mac->umac_ctx, data, datalen);                  umac128_update(mac->umac_ctx, data, datalen);
                 umac128_final(mac->umac_ctx, m, nonce);                  umac128_final(mac->umac_ctx, u.m, nonce);
                 break;                  break;
         default:          default:
                 fatal("mac_compute: unknown MAC type");                  fatal("mac_compute: unknown MAC type");
         }          }
         return (m);          return (u.m);
 }  }
   
 void  void

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