Fix LogEntry.UnmarshalBinary() short buffer check.

pull/9324/head
Ben Johnson 2018-01-16 13:14:26 -07:00
parent fd80af3117
commit 5f9d53b586
No known key found for this signature in database
GPG Key ID: 81741CD251883081
1 changed files with 9 additions and 3 deletions

View File

@ -937,6 +937,9 @@ type LogEntry struct {
// UnmarshalBinary unmarshals data into e.
func (e *LogEntry) UnmarshalBinary(data []byte) error {
var sz uint64
var n int
orig := data
start := len(data)
@ -956,8 +959,9 @@ func (e *LogEntry) UnmarshalBinary(data []byte) error {
// Parse name length.
if len(data) < 1 {
return io.ErrShortBuffer
} else if sz, n = binary.Uvarint(data); n == 0 {
return io.ErrShortBuffer
}
sz, n := binary.Uvarint(data)
// Read name data.
if len(data) < n+int(sz) {
@ -968,8 +972,9 @@ func (e *LogEntry) UnmarshalBinary(data []byte) error {
// Parse key length.
if len(data) < 1 {
return io.ErrShortBuffer
} else if sz, n = binary.Uvarint(data); n == 0 {
return io.ErrShortBuffer
}
sz, n = binary.Uvarint(data)
// Read key data.
if len(data) < n+int(sz) {
@ -980,8 +985,9 @@ func (e *LogEntry) UnmarshalBinary(data []byte) error {
// Parse value length.
if len(data) < 1 {
return io.ErrShortBuffer
} else if sz, n = binary.Uvarint(data); n == 0 {
return io.ErrShortBuffer
}
sz, n = binary.Uvarint(data)
// Read value data.
if len(data) < n+int(sz) {