From b7533d3b9cd3ef4d66e4e71fdb2a3f34936964d6 Mon Sep 17 00:00:00 2001 From: Jesper Louis Andersen Date: Thu, 16 Jan 2020 15:45:42 +0100 Subject: [PATCH] Release resources under failure sign and generichash failed to release their resources under failure. This can lead to subtle memory leaks in the very unlikely event we can't initialize. --- c_src/enacl_nif.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/c_src/enacl_nif.c b/c_src/enacl_nif.c index a1028df..079246f 100644 --- a/c_src/enacl_nif.c +++ b/c_src/enacl_nif.c @@ -685,6 +685,7 @@ static ERL_NIF_TERM enif_crypto_sign_init(ErlNifEnv *env, int argc, } if (0 != crypto_sign_init(state)) { + enif_release_resource(state); return nacl_error_tuple(env, "sign_init_error"); } @@ -1891,6 +1892,7 @@ static ERL_NIF_TERM enif_crypto_generichash_init(ErlNifEnv *env, int argc, // Call the library function if (0 != crypto_generichash_init(align64(state), k, key.size, hashSize)) { + enif_release_resource(state); return nacl_error_tuple(env, "hash_init_error"); }