From 4eb7ec70084ba7c87b1af8797c4c4e90c84f95a2 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Tue, 19 Mar 2024 13:23:23 +0100 Subject: [PATCH] Fix C-warnings (#10) * .envrc is not for git * Fix c code - avoid warnings * Bump Erlang versions in Github workflows --- .envrc | 1 - .github/workflows/ci.yaml | 6 +++--- .gitignore | 1 + c_src/enacl_nif.c | 5 ++--- c_src/generichash.c | 1 - c_src/kdf.c | 2 +- c_src/public.c | 2 +- c_src/secretstream.c | 2 ++ c_src/sign.c | 6 +++++- 9 files changed, 15 insertions(+), 11 deletions(-) delete mode 100644 .envrc diff --git a/.envrc b/.envrc deleted file mode 100644 index 051d09d..0000000 --- a/.envrc +++ /dev/null @@ -1 +0,0 @@ -eval "$(lorri direnv)" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0f20072..59992d8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,9 +13,9 @@ jobs: strategy: matrix: otp_vsn: - - "22.3" - - "23.3" - - "24.0" + - "24.3" + - "25.3" + - "26.2" os: - ubuntu-latest steps: diff --git a/.gitignore b/.gitignore index 870be65..e248614 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .rebar .rebar3 +.envrc ebin *.beam *.o diff --git a/c_src/enacl_nif.c b/c_src/enacl_nif.c index 5f67ab4..1a8556f 100644 --- a/c_src/enacl_nif.c +++ b/c_src/enacl_nif.c @@ -54,9 +54,8 @@ static int enacl_crypto_upgrade(ErlNifEnv* env, void **priv_data, return 0; } -static int enacl_crypto_unload(ErlNifEnv* env, void **priv_data, - ERL_NIF_TERM load_info) { - return 0; +static void enacl_crypto_unload(ErlNifEnv* env, void *priv_data) { + return; } /* GENERAL ROUTINES diff --git a/c_src/generichash.c b/c_src/generichash.c index 8f184a3..b15a14e 100644 --- a/c_src/generichash.c +++ b/c_src/generichash.c @@ -221,7 +221,6 @@ ERL_NIF_TERM enacl_crypto_generichash_update(ErlNifEnv *env, int argc, ERL_NIF_TERM const argv[]) { ERL_NIF_TERM ret; ErlNifBinary data; - unsigned int data_size; enacl_generichash_ctx *obj = NULL; // Validate the arguments diff --git a/c_src/kdf.c b/c_src/kdf.c index 5290513..ff6c8fe 100644 --- a/c_src/kdf.c +++ b/c_src/kdf.c @@ -20,7 +20,7 @@ ERL_NIF_TERM enacl_crypto_kdf_CONTEXTBYTES(ErlNifEnv *env, int argc, ERL_NIF_TERM enacl_crypto_kdf_derive_from_key(ErlNifEnv *env, int argc, ERL_NIF_TERM const argv[]) { ErlNifBinary m, c, r; - uint64_t id; + ErlNifUInt64 id; // Validate the arguments if ((argc != 3) || diff --git a/c_src/public.c b/c_src/public.c index f2113a8..623e41d 100644 --- a/c_src/public.c +++ b/c_src/public.c @@ -90,7 +90,7 @@ ERL_NIF_TERM enacl_crypto_box(ErlNifEnv *env, int argc, goto bad_arg; if (!enif_alloc_binary(padded_msg.size, &result)) { - goto done; + goto err; } if (0 != crypto_box(result.data, padded_msg.data, padded_msg.size, nonce.data, diff --git a/c_src/secretstream.c b/c_src/secretstream.c index 51414e7..2215b61 100644 --- a/c_src/secretstream.c +++ b/c_src/secretstream.c @@ -227,11 +227,13 @@ ERL_NIF_TERM enacl_crypto_secretstream_xchacha20poly1305_init_pull( obj->state = enif_alloc(crypto_secretstream_xchacha20poly1305_statebytes()); if (obj->state == NULL) { + ret = enacl_internal_error(env); goto release; } obj->alive = 1; if ((obj->mtx = enif_mutex_create("enacl.secretstream")) == NULL) { + ret = enacl_internal_error(env); goto free; } diff --git a/c_src/sign.c b/c_src/sign.c index fb06203..1a8622e 100644 --- a/c_src/sign.c +++ b/c_src/sign.c @@ -62,6 +62,7 @@ ERL_NIF_TERM enacl_crypto_sign_init(ErlNifEnv *env, int argc, obj->alive = 0; obj->state = enif_alloc(crypto_sign_statebytes()); if (obj->state == NULL) { + ret = enacl_internal_error(env); goto release; } obj->alive = 1; @@ -82,6 +83,7 @@ ERL_NIF_TERM enacl_crypto_sign_init(ErlNifEnv *env, int argc, bad_arg: return enif_make_badarg(env); free: + ret = enacl_internal_error(env); if (obj->alive) if (obj->state != NULL) { sodium_memzero(obj->state, crypto_sign_statebytes()); @@ -285,7 +287,9 @@ enacl_crypto_sign_ed25519_public_to_curve25519(ErlNifEnv *env, int argc, return enacl_internal_error(env); } - crypto_sign_ed25519_pk_to_curve25519(curve25519_pk.data, ed25519_pk.data); + if (crypto_sign_ed25519_pk_to_curve25519(curve25519_pk.data, ed25519_pk.data) != 0) { + return enacl_internal_error(env); + } return enif_make_binary(env, &curve25519_pk); }