aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Nilsson <[email protected]>2019-06-26 16:24:01 +0200
committerHans Nilsson <[email protected]>2019-06-26 16:24:01 +0200
commit4209eff3287373c4c6fd67e9e30507a13ebf7555 (patch)
treec9d16c1da05ae2119e048971d2caa479936d7b23
parent67c4a6f04fd311971e16c4be0511b97cea08d8a6 (diff)
parent6e7af43438f9055babf35239688cd0dd4ac1131b (diff)
downloadotp-4209eff3287373c4c6fd67e9e30507a13ebf7555.tar.gz
otp-4209eff3287373c4c6fd67e9e30507a13ebf7555.tar.bz2
otp-4209eff3287373c4c6fd67e9e30507a13ebf7555.zip
Merge branch 'hans/crypto/valgrind-fix-FIPS/OTP-15924' into maint
* hans/crypto/valgrind-fix-FIPS/OTP-15924: crypto: Adjust VALGRIND decls crypto: Fix mem leak detected by valgrind
-rw-r--r--lib/crypto/c_src/api_ng.c7
-rw-r--r--lib/crypto/c_src/bn.c7
2 files changed, 3 insertions, 11 deletions
diff --git a/lib/crypto/c_src/api_ng.c b/lib/crypto/c_src/api_ng.c
index a109f444cf..941e03cc98 100644
--- a/lib/crypto/c_src/api_ng.c
+++ b/lib/crypto/c_src/api_ng.c
@@ -334,12 +334,11 @@ ERL_NIF_TERM ng_crypto_init_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM arg
if ((ctx_res = enif_alloc_resource(evp_cipher_ctx_rtype, sizeof(struct evp_cipher_ctx))) == NULL)
return EXCP_ERROR(env, "Can't allocate resource");
- if (!get_init_args(env, ctx_res, argv[0], argv[1], argv[2], argv[argc-1],
+ if (get_init_args(env, ctx_res, argv[0], argv[1], argv[2], argv[argc-1],
&cipherp, &ret))
- /* Error msg in &ret */
- goto ret;
+ ret = enif_make_resource(env, ctx_res);
+ /* else error msg in ret */
- ret = enif_make_resource(env, ctx_res);
if(ctx_res) enif_release_resource(ctx_res);
} else if (enif_get_resource(env, argv[0], (ErlNifResourceType*)evp_cipher_ctx_rtype, (void**)&ctx_res)) {
diff --git a/lib/crypto/c_src/bn.c b/lib/crypto/c_src/bn.c
index 34ed4f7ebc..6021d56db6 100644
--- a/lib/crypto/c_src/bn.c
+++ b/lib/crypto/c_src/bn.c
@@ -32,8 +32,6 @@ int get_bn_from_mpint(ErlNifEnv* env, ERL_NIF_TERM term, BIGNUM** bnp)
if (bin.size > INT_MAX - 4)
goto err;
- ERL_VALGRIND_ASSERT_MEM_DEFINED(bin.data, bin.size);
-
if (bin.size < 4)
goto err;
sz = (int)bin.size - 4;
@@ -60,8 +58,6 @@ int get_bn_from_bin(ErlNifEnv* env, ERL_NIF_TERM term, BIGNUM** bnp)
if (bin.size > INT_MAX)
goto err;
- ERL_VALGRIND_ASSERT_MEM_DEFINED(bin.data, bin.size);
-
if ((ret = BN_bin2bn(bin.data, (int)bin.size, NULL)) == NULL)
goto err;
@@ -103,8 +99,6 @@ ERL_NIF_TERM mod_exp_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
unsigned extra_byte;
ERL_NIF_TERM ret;
- ASSERT(argc == 4);
-
if (!get_bn_from_bin(env, argv[0], &bn_base))
goto bad_arg;
if (!get_bn_from_bin(env, argv[1], &bn_exponent))
@@ -177,7 +171,6 @@ ERL_NIF_TERM bn2term(ErlNifEnv* env, const BIGNUM *bn)
BN_bn2bin(bn, ptr);
- ERL_VALGRIND_MAKE_MEM_DEFINED(ptr, dlen);
return ret;
err: