swarm/network: prevent relay of invalid IPs
This commit is contained in:
parent
a98d1d67d6
commit
e46bda5093
@ -26,6 +26,7 @@ import (
|
|||||||
"github.com/ethereum/go-ethereum/logger"
|
"github.com/ethereum/go-ethereum/logger"
|
||||||
"github.com/ethereum/go-ethereum/logger/glog"
|
"github.com/ethereum/go-ethereum/logger/glog"
|
||||||
"github.com/ethereum/go-ethereum/p2p/discover"
|
"github.com/ethereum/go-ethereum/p2p/discover"
|
||||||
|
"github.com/ethereum/go-ethereum/p2p/netutil"
|
||||||
"github.com/ethereum/go-ethereum/swarm/network/kademlia"
|
"github.com/ethereum/go-ethereum/swarm/network/kademlia"
|
||||||
"github.com/ethereum/go-ethereum/swarm/storage"
|
"github.com/ethereum/go-ethereum/swarm/storage"
|
||||||
)
|
)
|
||||||
@ -288,6 +289,10 @@ func newNodeRecord(addr *peerAddr) *kademlia.NodeRecord {
|
|||||||
func (self *Hive) HandlePeersMsg(req *peersMsgData, from *peer) {
|
func (self *Hive) HandlePeersMsg(req *peersMsgData, from *peer) {
|
||||||
var nrs []*kademlia.NodeRecord
|
var nrs []*kademlia.NodeRecord
|
||||||
for _, p := range req.Peers {
|
for _, p := range req.Peers {
|
||||||
|
if err := netutil.CheckRelayIP(from.remoteAddr.IP, p.IP); err != nil {
|
||||||
|
glog.V(logger.Detail).Infof("invalid peer IP %v from %v: %v", from.remoteAddr.IP, p.IP, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
nrs = append(nrs, newNodeRecord(p))
|
nrs = append(nrs, newNodeRecord(p))
|
||||||
}
|
}
|
||||||
self.kad.Add(nrs)
|
self.kad.Add(nrs)
|
||||||
|
Loading…
Reference in New Issue
Block a user