From b009e17e9cb1a3b7b447cf9dc0110fcaebcc1b6b Mon Sep 17 00:00:00 2001 From: Wesley Bitter Date: Fri, 18 May 2018 15:25:24 +0000 Subject: [bugfix] check for an empty hashKey (#52) this scenario might occur when converting from an empty string to byte slice, such as when reading from a configuration file. --- securecookie.go | 2 +- securecookie_test.go | 23 +++++++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/securecookie.go b/securecookie.go index cd4e097..61af390 100644 --- a/securecookie.go +++ b/securecookie.go @@ -141,7 +141,7 @@ func New(hashKey, blockKey []byte) *SecureCookie { maxLength: 4096, sz: GobEncoder{}, } - if hashKey == nil { + if len(hashKey) == 0 { s.err = errHashKeyNotSet } if blockKey != nil { diff --git a/securecookie_test.go b/securecookie_test.go index 2b0f8a1..c32ff33 100644 --- a/securecookie_test.go +++ b/securecookie_test.go @@ -268,15 +268,22 @@ func TestMultiNoCodecs(t *testing.T) { } func TestMissingKey(t *testing.T) { - s1 := New(nil, nil) - - var dst []byte - err := s1.Decode("sid", "value", &dst) - if err != errHashKeyNotSet { - t.Fatalf("Expected %#v, got %#v", errHashKeyNotSet, err) + emptyKeys := [][]byte{ + nil, + []byte(""), } - if err2, ok := err.(Error); !ok || !err2.IsUsage() { - t.Errorf("Expected missing hash key to be IsUsage(); was %#v", err) + + for _, key := range emptyKeys { + s1 := New(key, nil) + + var dst []byte + err := s1.Decode("sid", "value", &dst) + if err != errHashKeyNotSet { + t.Fatalf("Expected %#v, got %#v", errHashKeyNotSet, err) + } + if err2, ok := err.(Error); !ok || !err2.IsUsage() { + t.Errorf("Expected missing hash key to be IsUsage(); was %#v", err) + } } } -- cgit v1.2.3