From 27adabf1b9678f146b162cd49f9dda0ccff0b916 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Mon, 17 Jul 2023 19:29:40 +0200 Subject: [PATCH] dial: validate peer id --- net/peerservice/peerservice.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/peerservice/peerservice.go b/net/peerservice/peerservice.go index eda1d8c8..8215ba76 100644 --- a/net/peerservice/peerservice.go +++ b/net/peerservice/peerservice.go @@ -20,7 +20,8 @@ const CName = "net.peerservice" var log = logger.NewNamed(CName) var ( - ErrAddrsNotFound = errors.New("addrs for peer not found") + ErrAddrsNotFound = errors.New("addrs for peer not found") + ErrPeerIdMismatched = errors.New("peerId mismatched") ) func New() PeerService { @@ -79,6 +80,13 @@ func (p *peerService) Dial(ctx context.Context, peerId string) (pr peer.Peer, er if err != nil { return } + connPeerId, err := peer.CtxPeerId(mc.Context()) + if err != nil { + return nil, err + } + if connPeerId != peerId { + return nil, ErrPeerIdMismatched + } return peer.NewPeer(mc, p.server) }