From b5bc0d394376e77782565d57a0689f541f888d40 Mon Sep 17 00:00:00 2001 From: Wolfgang Welz <welzwo@gmail.com> Date: Wed, 22 Jan 2020 10:57:11 +0100 Subject: [PATCH] Do not allow loopback connections --- packages/gossip/errors.go | 1 + packages/gossip/manager.go | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/packages/gossip/errors.go b/packages/gossip/errors.go index 85e43340..554e3861 100644 --- a/packages/gossip/errors.go +++ b/packages/gossip/errors.go @@ -6,6 +6,7 @@ var ( ErrNotStarted = errors.New("manager not started") ErrClosed = errors.New("manager closed") ErrNotANeighbor = errors.New("peer is not a neighbor") + ErrLoopback = errors.New("loopback connection not allowed") ErrDuplicateNeighbor = errors.New("peer already connected") ErrInvalidPacket = errors.New("invalid packet") ) diff --git a/packages/gossip/manager.go b/packages/gossip/manager.go index 03bcb475..683cd24c 100644 --- a/packages/gossip/manager.go +++ b/packages/gossip/manager.go @@ -78,6 +78,9 @@ func (m *Manager) LocalAddr() net.Addr { // AddOutbound tries to add a neighbor by connecting to that peer. func (m *Manager) AddOutbound(p *peer.Peer) error { + if p.ID() == m.local.ID() { + return ErrLoopback + } var srv *server.TCP m.mu.RLock() if m.srv == nil { @@ -91,6 +94,9 @@ func (m *Manager) AddOutbound(p *peer.Peer) error { // AddInbound tries to add a neighbor by accepting an incoming connection from that peer. func (m *Manager) AddInbound(p *peer.Peer) error { + if p.ID() == m.local.ID() { + return ErrLoopback + } var srv *server.TCP m.mu.RLock() if m.srv == nil { -- GitLab