diff --git a/ext/jruby/org/netssh/bcrypt_pbkdf/BCryptPbkdf.java b/ext/jruby/org/netssh/bcrypt_pbkdf/BCryptPbkdf.java index 87ecaf7..4e02630 100644 --- a/ext/jruby/org/netssh/bcrypt_pbkdf/BCryptPbkdf.java +++ b/ext/jruby/org/netssh/bcrypt_pbkdf/BCryptPbkdf.java @@ -188,7 +188,7 @@ public final class BCryptPbkdf { }; static byte[] cryptPbkdf(byte[] pass, byte[] salt, int keylen, int rounds) { - if (rounds < 1 || pass.length == 0 || salt.length == 0 || keylen == 0 || keylen > BCRYPT_HASHSIZE * BCRYPT_HASHSIZE || salt.length > (1 << 20)) { + if (rounds < 1 || pass.length == 0 || salt.length == 0 || keylen < 1 || keylen > BCRYPT_HASHSIZE * BCRYPT_HASHSIZE || salt.length > (1 << 20)) { return null; } diff --git a/test/bcrypt_pnkdf/engine_test.rb b/test/bcrypt_pnkdf/engine_test.rb index 98d990c..40221bb 100644 --- a/test/bcrypt_pnkdf/engine_test.rb +++ b/test/bcrypt_pnkdf/engine_test.rb @@ -68,6 +68,7 @@ def test_ruby_and_native_returns_the_same def test_invalid_pbkdf_arguments_return_nil assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('', 'salt', 14, 1) assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('pass', '', 14, 1) + assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('pass', 'salt', -1, 1) assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('pass', 'salt', 0, 1) assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('pass', 'salt', 14, 0) assert_nil BCryptPbkdf::Engine.__bc_crypt_pbkdf('pass', 'salt', 1025, 1)