diff --git a/fetch_response.go b/fetch_response.go index 840808d68..1ac543921 100644 --- a/fetch_response.go +++ b/fetch_response.go @@ -22,9 +22,6 @@ func (pr *FetchResponseBlock) decode(pd packetDecoder) (err error) { if err != nil { return err } - if msgSetSize < 0 { - return PacketDecodingError{"invalid message set size"} - } msgSetDecoder, err := pd.getSubset(int(msgSetSize)) if err != nil { diff --git a/produce_request.go b/produce_request.go index f21956137..473513c6a 100644 --- a/produce_request.go +++ b/produce_request.go @@ -90,9 +90,6 @@ func (p *ProduceRequest) decode(pd packetDecoder) error { if err != nil { return err } - if messageSetSize == 0 { - continue - } msgSetDecoder, err := pd.getSubset(int(messageSetSize)) if err != nil { return err diff --git a/real_decoder.go b/real_decoder.go index b194b9bcc..e7462c32b 100644 --- a/real_decoder.go +++ b/real_decoder.go @@ -188,7 +188,9 @@ func (rd *realDecoder) remaining() int { } func (rd *realDecoder) getSubset(length int) (packetDecoder, error) { - if length > rd.remaining() { + if length < 0 { + return nil, PacketDecodingError{"invalid subset size"} + } else if length > rd.remaining() { rd.off = len(rd.raw) return nil, ErrInsufficientData }