-
Notifications
You must be signed in to change notification settings - Fork 3k
ERL-628: Inconsistent behavior when reading binaries in within a NIF #3549
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Labels
Comments
|
|
|
|
|
|
|
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
Original reporter:
starbelly
Affected versions:
OTP-19.0
,OTP-20.0
,OTP-21.0
Component:
compiler
Migrated from: https://bugs.erlang.org/browse/ERL-628
#!/usr/bin/env escript
%%! -noshell -env ERL_LIBS _build/default/lib
-mode(compile).
test(N) ->
io:format("~n===== Pass #
bn", [N]),{ok, O} = file:read_file("one.txt"),
{ok, T} = file:read_file("two.txt"),
H = string:trim(O, trailing, "\n"),
P = string:trim(T, trailing, "\n"),
io:format("Before NIF =>
pn", [{H, P}]),Out = enacl:pwhash_str_verify(H, P),
io:format("After NIF =>
pn", [{H, P}]),io:format("NIF RESULT =>
sn", [Out]),main([_]) ->
application:ensure_all_started(enacl),
lists:map(fun(N) -> test(N) end, lists:seq(1,3)),
init:stop().
==== Pass #1
Before NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y
��Z�j9��Q�Z�v]@' and 'foo
'
After NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT => false
Before NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y' and 'foo'
After NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT (literal) => true
===== Pass #2
Before NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y
�g���^�]�Jk�{�@' and 'foo
'
After NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT => false
Before NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y' and 'foo'
After NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT (literal) => true
===== Pass #3
Before NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y
�A����2����,@' and 'foo
'
After NIF => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT => false
Before NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
IN NIF => '$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y' and 'foo'
After NIF (literal) => {<<"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y">>,
<<"foo">>}
NIF RESULT (literal) => true
diff --git a/c_src/enacl_nif.c b/c_src/enacl_nif.c
index 1046af7..0e6798e 100644
--- a/c_src/enacl_nif.c
+++ b/c_src/enacl_nif.c
@@ -1295,17 +1295,19 @@ ERL_NIF_TERM enif_crypto_pwhash_str(ErlNifEnv *env, int argc, ERL_NIF_TERM const
static
ERL_NIF_TERM enif_crypto_pwhash_str_verify(ErlNifEnv *env, int argc, ERL_NIF_TERM const argv[]) {
// Validate the arguments
if( (argc != 2) ||
return enif_make_badarg(env);
}
ERL_NIF_TERM retVal = enif_make_atom(env, ATOM_TRUE);
/ wrong password */
retVal = enif_make_atom(env, ATOM_FALSE);
}
===== Pass #1
Before NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
After NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
NIF RESULT (literal) => true
===== Pass #2
Before NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
After NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
NIF RESULT (literal) => true
===== Pass #3
Before NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
After NIF (literal) => {"$argon2id$v=19$m=65536,t=2,p=1$39gbxAJq7dxSB8ycRRwZKg$2x5eXfGN0uSh2ywUe7pU9eb6wKAykhY3Ewu4LrSwt7Y",
<<"foo">>}
NIF RESULT (literal) => true
The text was updated successfully, but these errors were encountered: