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

Diff for /src/usr.bin/snmp/usm.c between version 1.6 and 1.7

version 1.6, 2022/01/05 10:59:21 version 1.7, 2022/01/05 16:41:07
Line 632 
Line 632 
   
         if ((ctx = EVP_MD_CTX_new()) == NULL)          if ((ctx = EVP_MD_CTX_new()) == NULL)
                 return NULL;                  return NULL;
         EVP_DigestInit_ex(ctx, md, NULL);          if (!EVP_DigestInit_ex(ctx, md, NULL)) {
                   EVP_MD_CTX_free(ctx);
                   return NULL;
           }
   
         pw = (const u_char *)passwd;          pw = (const u_char *)passwd;
         for (count = 0; count < 1048576; count += 64) {          for (count = 0; count < 1048576; count += 64) {
                 c = keybuf;                  c = keybuf;
Line 641 
Line 645 
                                 pw = (const u_char *)passwd;                                  pw = (const u_char *)passwd;
                         *c++ = *pw++;                          *c++ = *pw++;
                 }                  }
                 EVP_DigestUpdate(ctx, keybuf, 64);                  if (!EVP_DigestUpdate(ctx, keybuf, 64)) {
                           EVP_MD_CTX_free(ctx);
                           return NULL;
                   }
         }          }
         EVP_DigestFinal_ex(ctx, keybuf, &dlen);          if (!EVP_DigestFinal_ex(ctx, keybuf, &dlen)) {
                   EVP_MD_CTX_free(ctx);
                   return NULL;
           }
         EVP_MD_CTX_free(ctx);          EVP_MD_CTX_free(ctx);
   
         if ((key = malloc(dlen)) == NULL)          if ((key = malloc(dlen)) == NULL)
Line 662 
Line 672 
   
         if ((ctx = EVP_MD_CTX_new()) == NULL)          if ((ctx = EVP_MD_CTX_new()) == NULL)
                 return NULL;                  return NULL;
         EVP_DigestInit_ex(ctx, md, NULL);  
   
         EVP_DigestUpdate(ctx, mkey, EVP_MD_size(md));          if (!EVP_DigestInit_ex(ctx, md, NULL) ||
         EVP_DigestUpdate(ctx, usm->engineid, usm->engineidlen);              !EVP_DigestUpdate(ctx, mkey, EVP_MD_size(md)) ||
         EVP_DigestUpdate(ctx, mkey, EVP_MD_size(md));              !EVP_DigestUpdate(ctx, usm->engineid, usm->engineidlen) ||
               !EVP_DigestUpdate(ctx, mkey, EVP_MD_size(md)) ||
               !EVP_DigestFinal_ex(ctx, buf, &lklen)) {
                   EVP_MD_CTX_free(ctx);
                   return NULL;
           }
   
         EVP_DigestFinal_ex(ctx, buf, &lklen);  
         EVP_MD_CTX_free(ctx);          EVP_MD_CTX_free(ctx);
   
         if ((lkey = malloc(lklen)) == NULL)          if ((lkey = malloc(lklen)) == NULL)

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7