diff options
author | Matthew Dempsky <mdempsky@google.com> | 2015-04-17 14:45:51 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2015-04-17 22:04:34 +0000 |
commit | 4d01922e46514d065d357355f08b3922cc65f782 (patch) | |
tree | 7b5f3eb9a6cceaaf5285aef46e30bc5552596ac8 /src/encoding/gob/decode.go | |
parent | 223ab4dbcc4f44062e37bbe48be5ea6b1806ace8 (diff) | |
download | go-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.go | 3 |
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) } } |