diff --git a/cmd/syncthing/main.go b/cmd/syncthing/main.go index 32e17609..063ab49f 100644 --- a/cmd/syncthing/main.go +++ b/cmd/syncthing/main.go @@ -412,7 +412,13 @@ func listenConnect(myID string, disc *discover.Discoverer, m *Model, tlsCfg *tls next: for conn := range conns { - remoteID := certID(conn.ConnectionState().PeerCertificates[0].Raw) + certs := conn.ConnectionState().PeerCertificates + if l := len(certs); l != 1 { + warnf("Got peer certificate list of length %d != 1; protocol error", l) + conn.Close() + continue + } + remoteID := certID(certs[0].Raw) if remoteID == myID { warnf("Connected to myself (%s) - should not happen", remoteID)