ima-evm-utils: fix memory leak in ima_calc_hash
PATCH 1/1 ima-evm-utils: fix memory leak in ima_calc_hash
Free EVP_MD_CTX in ima_calc_hash(). Also, remove legacy EVP_MD_CTX usage.
Signed-off-by Vitaly Chikunov <[email protected]>
--- src/libimaevm.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
src/libimaevm.c +7 -8
@@ -322,12 +322,6 @@ int ima_calc_hash(const char *file, uint8_t *hash)EVP_MD_CTX *pctx;unsigned int mdlen;int err; -#if OPENSSL_VERSION_NUMBER <0x10100000 -EVP_MD_CTX ctx; - pctx = &ctx; -#else - pctx =EVP_MD_CTX_new (); -#endif /* Need to know the file length */ err =lstat (file, &st);
@@ -342,9 +336,11 @@ int ima_calc_hash(const char *file, uint8_t *hash)return 1 ; } + pctx =EVP_MD_CTX_new (); err =EVP_DigestInit (pctx, md);if (!err) {log_err ("EVP_DigestInit() failed\n" ); +EVP_MD_CTX_free (pctx);return 1 ; }
@@ -364,18 +360,21 @@ int ima_calc_hash(const char *file, uint8_t *hash)break ;default :log_errno ("Unsupported file type" ); +EVP_MD_CTX_free (pctx);return -1 ; } -if (err) +if (err) { +EVP_MD_CTX_free (pctx);return err; + } err =EVP_DigestFinal (pctx, hash, &mdlen); +EVP_MD_CTX_free (pctx);if (!err) {log_err ("EVP_DigestFinal() failed\n" );return 1 ; } -return mdlen; }
Signature · 1 line
2.11.0