Skip to content

Commit 5cc7b30

Browse files
committed
Check nil values in SHA256.equal/2
- See #53 - Check for nil values in `equal?/2` to avoid call `String.valid/1` on nil
1 parent 05ea920 commit 5cc7b30

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/cloak_ecto/types/sha_256.ex

+4
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ defmodule Cloak.Ecto.SHA256 do
7777

7878
@doc false
7979
@impl Ecto.Type
80+
def equal?(nil, nil), do: true
81+
def equal?(nil, _value), do: false
82+
def equal?(_value, nil), do: false
83+
8084
def equal?(value1, value2) do
8185
hash_string(value1) == hash_string(value2)
8286
end

test/cloak_ecto/types/sha256_test.exs

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ defmodule Cloak.Ecto.SHA256Test do
3232

3333
describe ".equal?/2" do
3434
test "return true on same values and hashed values" do
35+
assert Field.equal?(nil, nil)
3536
assert Field.equal?("value", "value")
3637
assert Field.equal?(:crypto.hash(:sha256, "value"), :crypto.hash(:sha256, "value"))
3738
assert Field.equal?("value", :crypto.hash(:sha256, "value"))
@@ -41,6 +42,8 @@ defmodule Cloak.Ecto.SHA256Test do
4142
test "return false on different values" do
4243
refute Field.equal?("value", "not equal")
4344
refute Field.equal?(:crypto.hash(:sha256, "value"), :crypto.hash(:sha256, "not equal"))
45+
refute Field.equal?(nil, "not equal")
46+
refute Field.equal?("not equal", nil)
4447
end
4548
end
4649
end

0 commit comments

Comments
 (0)