From c8327a8fe2751bc65987b9698967ee8680691260 Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Tue, 18 Nov 2014 21:57:27 -0600 Subject: [PATCH] Log bad metadata packets instead of crashing --- client.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 } -- 2.48.1