pkcs11-tool: fixed resource leak

This commit is contained in:
Frank Morgner 2015-04-30 00:07:11 +02:00 committed by Viktor Tarasov
parent ecc9b9dac9
commit 2c32575e89
1 changed files with 13 additions and 6 deletions

View File

@ -3367,9 +3367,9 @@ static EVP_PKEY *get_public_key(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE priv
if ( !pkey || !rsa || !mod || !exp) { if ( !pkey || !rsa || !mod || !exp) {
printf("public key not extractable\n"); printf("public key not extractable\n");
if (pkey) if (pkey)
free(pkey); EVP_PKEY_free(pkey);
if (rsa) if (rsa)
free(rsa); RSA_free(rsa);
if (mod) if (mod)
free(mod); free(mod);
if (exp) if (exp)
@ -3424,7 +3424,7 @@ static int sign_verify_openssl(CK_SESSION_HANDLE session,
#ifdef ENABLE_OPENSSL #ifdef ENABLE_OPENSSL
int err; int err;
EVP_PKEY *pkey; EVP_PKEY *pkey;
EVP_MD_CTX md_ctx; EVP_MD_CTX *md_ctx;
const EVP_MD *evp_mds[] = { const EVP_MD *evp_mds[] = {
EVP_sha1(), EVP_sha1(),
@ -3468,9 +3468,16 @@ static int sign_verify_openssl(CK_SESSION_HANDLE session,
if (!(pkey = get_public_key(session, privKeyObject))) if (!(pkey = get_public_key(session, privKeyObject)))
return errors; return errors;
EVP_VerifyInit(&md_ctx, evp_mds[evp_md_index]); md_ctx = EVP_MD_CTX_create();
EVP_VerifyUpdate(&md_ctx, verifyData, verifyDataLen); if (!md_ctx)
err = EVP_VerifyFinal(&md_ctx, sig1, sigLen1, pkey); err = -1;
else {
EVP_VerifyInit(md_ctx, evp_mds[evp_md_index]);
EVP_VerifyUpdate(md_ctx, verifyData, verifyDataLen);
err = EVP_VerifyFinal(md_ctx, sig1, sigLen1, pkey);
EVP_MD_CTX_destroy(md_ctx);
EVP_PKEY_free(pkey);
}
if (err == 0) { if (err == 0) {
printf("ERR: verification failed\n"); printf("ERR: verification failed\n");
errors++; errors++;