reject version negotiation packets with an empty version list

This commit is contained in:
Marten Seemann
2017-10-14 13:25:20 -07:00
parent 7cb8e87580
commit bbe9affa27
4 changed files with 15 additions and 7 deletions

View File

@@ -60,6 +60,9 @@ func parseLongHeader(b *bytes.Reader, packetSentBy protocol.Perspective, typeByt
if packetSentBy == protocol.PerspectiveClient {
return nil, qerr.Error(qerr.InvalidVersionNegotiationPacket, "sent by the client")
}
if b.Len() == 0 {
return nil, qerr.Error(qerr.InvalidVersionNegotiationPacket, "empty version list")
}
h.SupportedVersions = make([]protocol.VersionNumber, b.Len()/4)
for i := 0; b.Len() > 0; i++ {
v, err := utils.BigEndian.ReadUint32(b)