diff options
Diffstat (limited to 'usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c')
-rw-r--r-- | usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c index 8f492aee68..e8c7f2ee6f 100644 --- a/usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c +++ b/usr/src/lib/pkcs11/pkcs11_softtoken/common/softFipsDSAUtil.c @@ -259,6 +259,7 @@ clean2: else rv = CKR_FUNCTION_FAILED; clean1: + free(sha1_context); return (rv); } @@ -366,6 +367,7 @@ clean7: clean6: DSA_key_finish(&dsakey); clean1: + free(sha1_context); return (rv); } @@ -484,7 +486,7 @@ soft_fips_dsa_post(void) if ((rv != CKR_OK) || (memcmp(dsa_computed_signature, dsa_known_signature, FIPS_DSA_SIGNATURE_LENGTH) != 0)) { - return (rv); + goto clean; } /* @@ -495,6 +497,10 @@ soft_fips_dsa_post(void) rv = fips_dsa_verify(&dsa_params, &dsa_public_key, dsa_known_digest, dsa_computed_signature); +clean: + free(dsa_private_key.key); + free(dsa_public_key.key); + if (rv != CKR_OK) return (CKR_DEVICE_ERROR); else |