diff options
| author | Rob Pike <r@golang.org> | 2015-04-06 11:39:36 -0700 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2015-04-06 21:40:03 +0000 |
| commit | e449b5705b4cffc29e9f24f6d24386d64dbd5dbb (patch) | |
| tree | 588832f3612669d19d6282f4ebf8a641695c1ff2 /src/encoding/gob/encoder_test.go | |
| parent | 8c3fc088fbe1a25be73430a20a0c76af3c68d2f5 (diff) | |
| download | go-e449b5705b4cffc29e9f24f6d24386d64dbd5dbb.tar.xz | |
encoding/gob: change panic into error for corrupt input
decBuffer.Drop is called using data provided by the user, don't
panic if it's bogus.
Fixes #10272.
Change-Id: I913ae9c3c45cef509f2b8eb02d1efa87fbd52afa
Reviewed-on: https://go-review.googlesource.com/8496
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/encoding/gob/encoder_test.go')
| -rw-r--r-- | src/encoding/gob/encoder_test.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/encoding/gob/encoder_test.go b/src/encoding/gob/encoder_test.go index 4af7195209..7607b17dee 100644 --- a/src/encoding/gob/encoder_test.go +++ b/src/encoding/gob/encoder_test.go @@ -954,3 +954,17 @@ func TestErrorForHugeSlice(t *testing.T) { t.Fatalf("decode: expected slice too big error, got %s", err.Error()) } } + +// Don't crash, just give error with corrupted length. +// Issue 10270. +func TestErrorBadDrop(t *testing.T) { + data := []byte{0x05, 0x10, 0x00, 0x28, 0x55, 0x7b, 0x02, 0x02, 0x7f, 0x83, 0x02} + d := NewDecoder(bytes.NewReader(data)) + err := d.Decode(nil) + if err == nil { + t.Fatal("decode: no error") + } + if !strings.Contains(err.Error(), "interface encoding") { + t.Fatalf("decode: expected interface encoding error, got %s", err.Error()) + } +} |
