aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/plugins/openssl
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2008-11-04 13:01:36 +0000
committerMartin Willi <martin@strongswan.org>2008-11-04 13:01:36 +0000
commitdcbea444eefe7ff50125fe6c326bbf7e34e64a2e (patch)
tree08d0d95663cdba49ab07daa30ad15908382d4f31 /src/libstrongswan/plugins/openssl
parent480be6436a1f40ca1157e92b0d0a08442fca88c8 (diff)
downloadstrongswan-dcbea444eefe7ff50125fe6c326bbf7e34e64a2e.tar.bz2
strongswan-dcbea444eefe7ff50125fe6c326bbf7e34e64a2e.tar.xz
fixed memleak
Diffstat (limited to 'src/libstrongswan/plugins/openssl')
-rw-r--r--src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c b/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c
index 205220a3f..c152b8233 100644
--- a/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c
+++ b/src/libstrongswan/plugins/openssl/openssl_rsa_private_key.c
@@ -74,9 +74,10 @@ openssl_rsa_public_key_t *openssl_rsa_public_key_create_from_n_e(BIGNUM *n, BIGN
* Build an EMPSA PKCS1 signature described in PKCS#1
*/
static bool build_emsa_pkcs1_signature(private_openssl_rsa_private_key_t *this,
- int type, chunk_t data, chunk_t *signature)
+ int type, chunk_t data, chunk_t *out)
{
bool success = FALSE;
+ u_char *sig = NULL;
u_int len;
const EVP_MD *hasher = EVP_get_digestbynid(type);
if (!hasher)
@@ -106,15 +107,17 @@ static bool build_emsa_pkcs1_signature(private_openssl_rsa_private_key_t *this,
goto error;
}
- *signature = chunk_alloc(RSA_size(this->rsa));
-
- if (!EVP_SignFinal(ctx, signature->ptr, &len, key))
+ sig = malloc(EVP_PKEY_size(key));
+ if (EVP_SignFinal(ctx, sig, &len, key))
{
- goto error;
+ out->ptr = sig;
+ out->len = len;
+ success = TRUE;
+ }
+ else
+ {
+ free(sig);
}
- signature->len = len;
-
- success = TRUE;
error:
if (key)