2
0
mirror of synced 2025-02-23 22:28:11 +00:00

Log bad metadata packets instead of crashing

This commit is contained in:
Matt Joiner 2014-11-18 21:57:27 -06:00
parent 3dd43c6099
commit c8327a8fe2

View File

@ -846,7 +846,12 @@ func (cl *Client) gotMetadataExtensionMsg(payload []byte, t *torrent, c *connect
if t.haveInfo() {
break
}
t.SaveMetadataPiece(piece, payload[len(payload)-metadataPieceSize(d["total_size"], piece):])
begin := len(payload) - metadataPieceSize(d["total_size"], piece)
if begin < 0 || begin >= len(payload) {
log.Printf("got bad metadata piece")
break
}
t.SaveMetadataPiece(piece, payload[begin:])
if !t.HaveAllMetadataPieces() {
break
}