From: Matt Joiner <anacrolix@gmail.com>
Date: Thu, 29 Dec 2022 08:41:09 +0000 (+1100)
Subject: Avoid panic in AnnounceEvent.String
X-Git-Tag: v1.49.0~7^2~6
X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=f61085c7859f36a78391e32d302b0c6cd3fbb0db;p=btrtrc.git

Avoid panic in AnnounceEvent.String
---

diff --git a/tracker/udp/announce.go b/tracker/udp/announce.go
index 59b6c6cf..b5c9f8ff 100644
--- a/tracker/udp/announce.go
+++ b/tracker/udp/announce.go
@@ -38,7 +38,12 @@ func (me *AnnounceEvent) UnmarshalText(text []byte) error {
 var announceEventStrings = []string{"", "completed", "started", "stopped"}
 
 func (e AnnounceEvent) String() string {
-	// See BEP 3, "event", and https://github.com/anacrolix/torrent/issues/416#issuecomment-751427001.
+	// See BEP 3, "event", and
+	// https://github.com/anacrolix/torrent/issues/416#issuecomment-751427001. Return a safe default
+	// in case event values are not sanitized.
+	if e < 0 || int(e) >= len(announceEventStrings) {
+		return ""
+	}
 	return announceEventStrings[e]
 }