Browse Source

Merge pull request #525 from Shopify/another-fuzz-fix

Centralize and unify getSubset error checking
Willem van Bergen 9 years ago
parent
commit
758ae7df75
3 changed files with 3 additions and 7 deletions
  1. 0 3
      fetch_response.go
  2. 0 3
      produce_request.go
  3. 3 1
      real_decoder.go

+ 0 - 3
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 {

+ 0 - 3
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

+ 3 - 1
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
 	}