From: Aidas K. <mo...@us...> - 2004-06-16 17:57:58
|
Update of /cvsroot/ipsec-tools/ipsec-tools/src/racoon In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22639/src/racoon Modified Files: crypto_openssl.c Log Message: small memory leak fixes Index: crypto_openssl.c =================================================================== RCS file: /cvsroot/ipsec-tools/ipsec-tools/src/racoon/crypto_openssl.c,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- crypto_openssl.c 15 Jun 2004 13:52:38 -0000 1.25 +++ crypto_openssl.c 16 Jun 2004 17:57:38 -0000 1.26 @@ -637,8 +637,10 @@ error = i2d_X509(x509, &bp); X509_free(x509); - if (error == 0) + if (error == 0) { + vfree(cert); return NULL; + } return cert; } @@ -925,11 +927,13 @@ if (!EVP_CipherInit(&ctx, e, key->v, iv->v, enc)) { OpenSSL_BUG(); + vfree(res); return NULL; } if (!EVP_Cipher(&ctx, res->v, data->v, data->l)) { OpenSSL_BUG(); + vfree(res); return NULL; } @@ -1198,10 +1202,14 @@ /* encryption data */ memset(&c, 0, sizeof(c)); - if (rijndael_cipherInit(&c, MODE_CBC, iv->v) < 0) + if (rijndael_cipherInit(&c, MODE_CBC, iv->v) < 0){ + vfree(res); return NULL; - if (rijndael_blockEncrypt(&c, &k, data->v, data->l << 3, res->v) < 0) + } + if (rijndael_blockEncrypt(&c, &k, data->v, data->l << 3, res->v) < 0){ + vfree(res); return NULL; + } return res; } @@ -1224,10 +1232,14 @@ /* decryption data */ memset(&c, 0, sizeof(c)); - if (rijndael_cipherInit(&c, MODE_CBC, iv->v) < 0) + if (rijndael_cipherInit(&c, MODE_CBC, iv->v) < 0){ + vfree(res); return NULL; - if (rijndael_blockDecrypt(&c, &k, data->v, data->l << 3, res->v) < 0) + } + if (rijndael_blockDecrypt(&c, &k, data->v, data->l << 3, res->v) < 0){ + vfree(res); return NULL; + } return res; } |