From: Zdenek S. <st...@us...> - 2017-04-04 18:55:25
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "ipmitool". The branch, master has been updated via 1664902525a1c3771b4d8b3ccab7ea1ba6b2bdd1 (commit) from f004b4b7197fc83e7d47ec8cbcaefffa9a922717 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 1664902525a1c3771b4d8b3ccab7ea1ba6b2bdd1 Author: Holger Liebig <hol...@ts...> Date: Tue Apr 4 20:43:05 2017 +0200 ID:480 - Call EVP_CIPHER_CTX_free() instead of EVP_CIPHER_CTX_cleanup() Call EVP_CIPHER_CTX_free() instead of EVP_CIPHER_CTX_cleanup() to fix memory leak. diff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c index 0e330c1..9652a5e 100644 --- a/src/plugins/lanplus/lanplus_crypt_impl.c +++ b/src/plugins/lanplus/lanplus_crypt_impl.c @@ -165,13 +165,6 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, uint32_t * bytes_written) { EVP_CIPHER_CTX *ctx = NULL; - ctx = EVP_CIPHER_CTX_new(); - if (ctx == NULL) { - *bytes_written = 0; - return; - } - EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); - EVP_CIPHER_CTX_set_padding(ctx, 0); *bytes_written = 0; @@ -185,6 +178,14 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, printbuf(input, input_length, "encrypting this data"); } + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) { + lprintf(LOG_DEBUG, "ERROR: EVP_CIPHER_CTX_new() failed"); + return; + } + EVP_CIPHER_CTX_init(ctx); + EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); + EVP_CIPHER_CTX_set_padding(ctx, 0); /* * The default implementation adds a whole block of padding if the input @@ -198,7 +199,6 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, { /* Error */ *bytes_written = 0; - return; } else { @@ -206,16 +206,17 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, if(!EVP_EncryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen)) { + /* Error */ *bytes_written = 0; - return; /* Error */ } else { /* Success */ *bytes_written += tmplen; - EVP_CIPHER_CTX_cleanup(ctx); } } + /* performs cleanup and free */ + EVP_CIPHER_CTX_free(ctx); } @@ -243,13 +244,6 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, uint32_t * bytes_written) { EVP_CIPHER_CTX *ctx = NULL; - ctx = EVP_CIPHER_CTX_new(); - if (ctx == NULL) { - *bytes_written = 0; - return; - } - EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); - EVP_CIPHER_CTX_set_padding(ctx, 0); if (verbose >= 5) { @@ -258,12 +252,20 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, printbuf(input, input_length, "decrypting this data"); } - *bytes_written = 0; if (input_length == 0) return; + ctx = EVP_CIPHER_CTX_new(); + if (ctx == NULL) { + lprintf(LOG_DEBUG, "ERROR: EVP_CIPHER_CTX_new() failed"); + return; + } + EVP_CIPHER_CTX_init(ctx); + EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); + EVP_CIPHER_CTX_set_padding(ctx, 0); + /* * The default implementation adds a whole block of padding if the input * data is perfectly aligned. We would like to keep that from happening. @@ -277,7 +279,6 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, /* Error */ lprintf(LOG_DEBUG, "ERROR: decrypt update failed"); *bytes_written = 0; - return; } else { @@ -285,20 +286,21 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, if (!EVP_DecryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen)) { + /* Error */ char buffer[1000]; ERR_error_string(ERR_get_error(), buffer); lprintf(LOG_DEBUG, "the ERR error %s", buffer); lprintf(LOG_DEBUG, "ERROR: decrypt final failed"); *bytes_written = 0; - return; /* Error */ } else { /* Success */ *bytes_written += tmplen; - EVP_CIPHER_CTX_cleanup(ctx); } } + /* performs cleanup and free */ + EVP_CIPHER_CTX_free(ctx); if (verbose >= 5) { ----------------------------------------------------------------------- Summary of changes: src/plugins/lanplus/lanplus_crypt_impl.c | 44 +++++++++++++++++--------------- 1 file changed, 23 insertions(+), 21 deletions(-) hooks/post-receive -- ipmitool |