diff options
Diffstat (limited to 'libgo/go/encoding/gob/dec_helpers.go')
-rw-r--r-- | libgo/go/encoding/gob/dec_helpers.go | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libgo/go/encoding/gob/dec_helpers.go b/libgo/go/encoding/gob/dec_helpers.go index a1b67661d8f..3aa038da75e 100644 --- a/libgo/go/encoding/gob/dec_helpers.go +++ b/libgo/go/encoding/gob/dec_helpers.go @@ -327,11 +327,12 @@ func decStringSlice(state *decoderState, v reflect.Value, length int, ovfl error errorf("string data too long for buffer: %d", n) } // Read the data. - data := make([]byte, n) - if _, err := state.b.Read(data); err != nil { - errorf("error decoding string: %s", err) + data := state.b.Bytes() + if len(data) < n { + errorf("invalid string length %d: exceeds input size %d", n, len(data)) } - slice[i] = string(data) + slice[i] = string(data[:n]) + state.b.Drop(n) } return true } |