Try to catch some memory leaks in the error case.
authorGeoff Thorpe <geoff@openssl.org>
Wed, 26 Jul 2000 22:11:13 +0000 (22:11 +0000)
committerGeoff Thorpe <geoff@openssl.org>
Wed, 26 Jul 2000 22:11:13 +0000 (22:11 +0000)
crypto/engine/hw_ncipher.c

index 43a3330f554f626e7c34edba58002ed430f42a6a..547c8e38c8cd6f75796355c33c6398a7b125407b 100644 (file)
@@ -68,7 +68,7 @@
 #ifndef NO_HW
 #ifndef NO_HW_NCIPHER
 
-/* Attribution notice: nCipher har said several times that it's OK for
+/* Attribution notice: nCipher have said several times that it's OK for
  * us to implement a general interface to their boxes, and recently declared
  * their HWCryptoHook to be public, and therefore available for us to use.
  * Thanks, nCipher.
@@ -554,6 +554,12 @@ static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
                goto err;
                }
        hptr = OPENSSL_malloc(sizeof(HWCryptoHook_RSAKeyHandle));
+       if (!hptr)
+               {
+               ENGINEerr(ENGINE_F_HWCRHK_LOAD_PRIVKEY,
+                       ERR_R_MALLOC_FAILURE);
+               goto err;
+               }
        if (p_hwcrhk_RSALoadKey(hwcrhk_context, key_id, hptr,
                &rmsg, NULL))
                {
@@ -607,6 +613,8 @@ static EVP_PKEY *hwcrhk_load_privkey(const char *key_id,
  err:
        if (res)
                EVP_PKEY_free(res);
+       if (rtmp)
+               RSA_free(rtmp);
        return NULL;
        }