diff options
| author | Juergen Graf <juergen.graf@gmail.com> | 2025-12-22 01:27:49 +0000 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2026-01-13 07:44:11 -0800 |
| commit | 7d0074ccc6f17acbf2ebb10db06d492e08f887dc (patch) | |
| tree | 8ae802c545076b19fa5f72f44f8b303039aafa41 /scrypt/scrypt_test.go | |
| parent | 506e022208b864bc3c9c4a416fe56be75d10ad24 (diff) | |
| download | go-x-crypto-7d0074ccc6f17acbf2ebb10db06d492e08f887dc.tar.xz | |
scrypt: fix panic on parameters <= 0
Providing 0 as argument for r or p results in a panic:
panic: runtime error: integer divide by zero
Providing negative values for r or p returns a misleading error:
scrypt: parameters are too large
This change avoids the panic and introduces a new error
that is returned when r or p are <= 0:
scrypt: parameters must be > 0
Change-Id: I68987b27d1eedd66644d2ec9436cba364fc1d46d
Reviewed-on: https://go-review.googlesource.com/c/crypto/+/731780
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Auto-Submit: Roland Shoemaker <roland@golang.org>
Diffstat (limited to 'scrypt/scrypt_test.go')
| -rw-r--r-- | scrypt/scrypt_test.go | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/scrypt/scrypt_test.go b/scrypt/scrypt_test.go index 766ed8d..8a4637f 100644 --- a/scrypt/scrypt_test.go +++ b/scrypt/scrypt_test.go @@ -133,6 +133,10 @@ var bad = []testVector{ {"p", "s", 1, 1, 1, nil}, // N == 1 {"p", "s", 7, 8, 1, nil}, // N is not power of 2 {"p", "s", 16, maxInt / 2, maxInt / 2, nil}, // p * r too large + {"p", "s", 2, 0, 1, nil}, // r too small + {"p", "s", 2, 1, 0, nil}, // p too small + {"p", "s", 2, -1, 1, nil}, // r is negative + {"p", "s", 2, 1, -1, nil}, // p is negative } func TestKey(t *testing.T) { |
