Audit libcrypto for unchecked return values: fix all cases enountered
This commit is contained in:
@@ -89,7 +89,15 @@ unsigned char * PKCS12_pbe_crypt(X509_ALGOR *algor, const char *pass,
|
||||
goto err;
|
||||
}
|
||||
|
||||
EVP_CipherUpdate(&ctx, out, &i, in, inlen);
|
||||
if (!EVP_CipherUpdate(&ctx, out, &i, in, inlen))
|
||||
{
|
||||
OPENSSL_free(out);
|
||||
out = NULL;
|
||||
PKCS12err(PKCS12_F_PKCS12_PBE_CRYPT,ERR_R_EVP_LIB);
|
||||
goto err;
|
||||
}
|
||||
outlen += i;
|
||||
|
||||
outlen = i;
|
||||
if(!EVP_CipherFinal_ex(&ctx, out + i, &i)) {
|
||||
OPENSSL_free(out);
|
||||
|
||||
@@ -153,14 +153,16 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
for (i = 0; i < Slen; i++) *p++ = salt[i % saltlen];
|
||||
for (i = 0; i < Plen; i++) *p++ = pass[i % passlen];
|
||||
for (;;) {
|
||||
EVP_DigestInit_ex(&ctx, md_type, NULL);
|
||||
EVP_DigestUpdate(&ctx, D, v);
|
||||
EVP_DigestUpdate(&ctx, I, Ilen);
|
||||
EVP_DigestFinal_ex(&ctx, Ai, NULL);
|
||||
if (!EVP_DigestInit_ex(&ctx, md_type, NULL)
|
||||
|| !EVP_DigestUpdate(&ctx, D, v)
|
||||
|| !EVP_DigestUpdate(&ctx, I, Ilen)
|
||||
|| !EVP_DigestFinal_ex(&ctx, Ai, NULL))
|
||||
goto err;
|
||||
for (j = 1; j < iter; j++) {
|
||||
EVP_DigestInit_ex(&ctx, md_type, NULL);
|
||||
EVP_DigestUpdate(&ctx, Ai, u);
|
||||
EVP_DigestFinal_ex(&ctx, Ai, NULL);
|
||||
if (!EVP_DigestInit_ex(&ctx, md_type, NULL)
|
||||
|| !EVP_DigestUpdate(&ctx, Ai, u)
|
||||
|| !EVP_DigestFinal_ex(&ctx, Ai, NULL))
|
||||
goto err;
|
||||
}
|
||||
memcpy (out, Ai, min (n, u));
|
||||
if (u >= n) {
|
||||
@@ -201,6 +203,9 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
|
||||
} else BN_bn2bin (Ij, I + j);
|
||||
}
|
||||
}
|
||||
err:
|
||||
EVP_MD_CTX_cleanup(&ctx);
|
||||
return 0;
|
||||
}
|
||||
#ifdef DEBUG_KEYGEN
|
||||
void h__dump (unsigned char *p, int len)
|
||||
|
||||
@@ -97,10 +97,14 @@ int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
|
||||
return 0;
|
||||
}
|
||||
HMAC_CTX_init(&hmac);
|
||||
HMAC_Init_ex(&hmac, key, md_size, md_type, NULL);
|
||||
HMAC_Update(&hmac, p12->authsafes->d.data->data,
|
||||
p12->authsafes->d.data->length);
|
||||
HMAC_Final(&hmac, mac, maclen);
|
||||
if (!HMAC_Init_ex(&hmac, key, md_size, md_type, NULL)
|
||||
|| !HMAC_Update(&hmac, p12->authsafes->d.data->data,
|
||||
p12->authsafes->d.data->length)
|
||||
|| !HMAC_Final(&hmac, mac, maclen))
|
||||
{
|
||||
HMAC_CTX_cleanup(&hmac);
|
||||
return 0;
|
||||
}
|
||||
HMAC_CTX_cleanup(&hmac);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user