diff options
author | Doug Hogan <[email protected]> | 2019-01-03 20:34:11 -0800 |
---|---|---|
committer | Doug Hogan <[email protected]> | 2019-01-08 01:11:57 -0800 |
commit | 03644ba9bcab05568870291ac5f4687c813688f5 (patch) | |
tree | 0f5ab07b1ab585e46c17d1f1d16eea17fe736b94 /lib/crypto | |
parent | 448cda0d1668a643f8bddf7b0d1c1615e6d952b7 (diff) | |
download | otp-03644ba9bcab05568870291ac5f4687c813688f5.tar.gz otp-03644ba9bcab05568870291ac5f4687c813688f5.tar.bz2 otp-03644ba9bcab05568870291ac5f4687c813688f5.zip |
Revamp get_key_password()
Diffstat (limited to 'lib/crypto')
-rw-r--r-- | lib/crypto/c_src/engine.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/crypto/c_src/engine.c b/lib/crypto/c_src/engine.c index 95966508ec..56029638d4 100644 --- a/lib/crypto/c_src/engine.c +++ b/lib/crypto/c_src/engine.c @@ -69,11 +69,17 @@ char *get_key_password(ErlNifEnv *env, ERL_NIF_TERM key) { ERL_NIF_TERM tmp_term; ErlNifBinary pwd_bin; char *pwd = NULL; - if (enif_get_map_value(env, key, atom_password, &tmp_term) && - enif_inspect_binary(env, tmp_term, &pwd_bin) && - zero_terminate(pwd_bin, &pwd) - ) return pwd; + if (!enif_get_map_value(env, key, atom_password, &tmp_term)) + goto err; + if (!enif_inspect_binary(env, tmp_term, &pwd_bin)) + goto err; + if (!zero_terminate(pwd_bin, &pwd)) + goto err; + + return pwd; + + err: return NULL; } |