From: Matt Joiner Date: Wed, 19 Nov 2014 03:57:27 +0000 (-0600) Subject: Log bad metadata packets instead of crashing X-Git-Tag: v1.0.0~1502 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=c8327a8fe2751bc65987b9698967ee8680691260;p=btrtrc.git Log bad metadata packets instead of crashing --- diff --git a/client.go b/client.go index 88930fcf..9d97de93 100644 --- a/client.go +++ b/client.go @@ -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 }