aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/encoding/gob/dec_helpers.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/encoding/gob/dec_helpers.go')
-rw-r--r--libgo/go/encoding/gob/dec_helpers.go9
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
}