Add checks for ops/mem limit sizes

This commit is contained in:
ECrownofFire 2018-10-27 18:10:48 -04:00
parent 26f4a40eb4
commit 4afa6fc093
No known key found for this signature in database
GPG Key ID: B5C602DAACC7BCF9

View File

@ -1328,6 +1328,14 @@ ERL_NIF_TERM enif_crypto_pwhash(ErlNifEnv *env, int argc, ERL_NIF_TERM const arg
return enif_make_badarg(env); return enif_make_badarg(env);
} }
// Check limits
if( (o < crypto_pwhash_OPSLIMIT_MIN) ||
(o > crypto_pwhash_OPSLIMIT_MAX) ||
(m < crypto_pwhash_MEMLIMIT_MIN) ||
(m > crypto_pwhash_MEMLIMIT_MAX) ) {
return enif_make_badarg(env);
}
// Check Salt size // Check Salt size
if(s.size != crypto_pwhash_SALTBYTES) { if(s.size != crypto_pwhash_SALTBYTES) {
return nacl_error_tuple(env, "invalid_salt_size"); return nacl_error_tuple(env, "invalid_salt_size");
@ -1364,6 +1372,14 @@ ERL_NIF_TERM enif_crypto_pwhash_str(ErlNifEnv *env, int argc, ERL_NIF_TERM const
return enif_make_badarg(env); return enif_make_badarg(env);
} }
// Check limits
if( (o < crypto_pwhash_OPSLIMIT_MIN) ||
(o > crypto_pwhash_OPSLIMIT_MAX) ||
(m < crypto_pwhash_MEMLIMIT_MIN) ||
(m > crypto_pwhash_MEMLIMIT_MAX) ) {
return enif_make_badarg(env);
}
// Allocate memory for return binary // Allocate memory for return binary
if( !enif_alloc_binary(crypto_pwhash_STRBYTES, &h) ) { if( !enif_alloc_binary(crypto_pwhash_STRBYTES, &h) ) {
return nacl_error_tuple(env, "alloc_failed"); return nacl_error_tuple(env, "alloc_failed");