aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/gob/decode.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2015-04-17 14:45:51 -0700
committerRob Pike <r@golang.org>2015-04-17 22:04:34 +0000
commit4d01922e46514d065d357355f08b3922cc65f782 (patch)
tree7b5f3eb9a6cceaaf5285aef46e30bc5552596ac8 /src/encoding/gob/decode.go
parent223ab4dbcc4f44062e37bbe48be5ea6b1806ace8 (diff)
downloadgo-4d01922e46514d065d357355f08b3922cc65f782.tar.gz
go-4d01922e46514d065d357355f08b3922cc65f782.zip
encoding/gob: fix hang from skipping large slices
Change-Id: I4e59b5b1702e08d7c6191d0a70fb0a555f3340c8 Reviewed-on: https://go-review.googlesource.com/9061 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Rob Pike <r@golang.org>
Diffstat (limited to 'src/encoding/gob/decode.go')
-rw-r--r--src/encoding/gob/decode.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/encoding/gob/decode.go b/src/encoding/gob/decode.go
index 40dcc8eb7e..b34110f6f9 100644
--- a/src/encoding/gob/decode.go
+++ b/src/encoding/gob/decode.go
@@ -575,6 +575,9 @@ func (dec *Decoder) decodeMap(mtyp reflect.Type, state *decoderState, value refl
func (dec *Decoder) ignoreArrayHelper(state *decoderState, elemOp decOp, length int) {
instr := &decInstr{elemOp, 0, nil, errors.New("no error")}
for i := 0; i < length; i++ {
+ if state.b.Len() == 0 {
+ errorf("decoding array or slice: length exceeds input size (%d elements)", length)
+ }
elemOp(instr, state, noValue)
}
}