Parcourir la source

Fix two decoding bugs found by go-fuzz

(https://github.com/dvyukov/go-fuzz)

- handle negative message-set sizes in FetchResponses
- handle IPv6 and/or malformed broker addresses
Evan Huus il y a 10 ans
Parent
commit
306db491eb
2 fichiers modifiés avec 7 ajouts et 1 suppressions
  1. 4 1
      broker.go
  2. 3 0
      fetch_response.go

+ 4 - 1
broker.go

@@ -312,7 +312,10 @@ func (b *Broker) decode(pd packetDecoder) (err error) {
 		return err
 	}
 
-	b.addr = fmt.Sprint(host, ":", port)
+	b.addr = net.JoinHostPort(host, fmt.Sprint(port))
+	if _, _, err := net.SplitHostPort(b.addr); err != nil {
+		return err
+	}
 
 	return nil
 }

+ 3 - 0
fetch_response.go

@@ -22,6 +22,9 @@ 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 {