aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/gob/encoder_test.go
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2015-04-06 15:58:26 -0700
committerRob Pike <r@golang.org>2015-04-07 17:48:03 +0000
commit0c8fe3463fe5dc49361d7fdcaa2a4d23a38c3151 (patch)
treed0aca20dd306f56df39922db22e763a850ddb2db /src/encoding/gob/encoder_test.go
parentd3252a2db9b8e1b6cff26dd4d2721cedc91378dc (diff)
downloadgo-0c8fe3463fe5dc49361d7fdcaa2a4d23a38c3151.tar.xz
encoding/gob: more cleanups handling slice length
Fix the other places the slice length was being believed, and refactor the code to use a single function to unify the check. Fixes #10273. Change-Id: Ia62b25203fbe87c95d71a70ebc1db8d202eaa4a4 Reviewed-on: https://go-review.googlesource.com/8511 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/encoding/gob/encoder_test.go')
-rw-r--r--src/encoding/gob/encoder_test.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/encoding/gob/encoder_test.go b/src/encoding/gob/encoder_test.go
index 7607b17dee..b4c8675d34 100644
--- a/src/encoding/gob/encoder_test.go
+++ b/src/encoding/gob/encoder_test.go
@@ -968,3 +968,17 @@ func TestErrorBadDrop(t *testing.T) {
t.Fatalf("decode: expected interface encoding error, got %s", err.Error())
}
}
+
+// Don't crash, just give error with corrupted slice.
+// Issue 10273.
+func TestErrorBadSliceLength(t *testing.T) {
+ data := []byte{0x13, 0x0a, 0x00, 0xfb, 0x5d, 0xad, 0x0b, 0xf8, 0xff, 0x02, 0x02, 0x63, 0xe7, 0x00, 0x02, 0xfa, 0x28, 0x02, 0x02, 0x02, 0xa8, 0x98, 0x59}
+ d := NewDecoder(bytes.NewReader(data))
+ err := d.Decode(nil)
+ if err == nil {
+ t.Fatal("decode: no error")
+ }
+ if !strings.Contains(err.Error(), "slice length too large") {
+ t.Fatalf("decode: expected slice length too large error, got %s", err.Error())
+ }
+}