diff options
author | luigi1111 <luigi1111w@gmail.com> | 2020-12-07 10:24:30 -0600 |
---|---|---|
committer | luigi1111 <luigi1111w@gmail.com> | 2020-12-07 10:24:30 -0600 |
commit | b7425c14c8e7f2fda81d345829ff7e1bc0c382d3 (patch) | |
tree | 3a2d6b13c19b5cc05c6c28521e08885954475ee8 | |
parent | Merge pull request #7070 (diff) | |
parent | p2p: drop peers that spam peer lists (diff) | |
download | monero-b7425c14c8e7f2fda81d345829ff7e1bc0c382d3.tar.xz |
Merge pull request #7072
bc7cd78 p2p: drop peers that spam peer lists (moneromooo-monero)
-rw-r--r-- | src/cryptonote_config.h | 1 | ||||
-rw-r--r-- | src/p2p/net_node.inl | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/cryptonote_config.h b/src/cryptonote_config.h index 826cabe17..13f0c471b 100644 --- a/src/cryptonote_config.h +++ b/src/cryptonote_config.h @@ -132,6 +132,7 @@ #define P2P_DEFAULT_HANDSHAKE_INTERVAL 60 //secondes #define P2P_DEFAULT_PACKET_MAX_SIZE 50000000 //50000000 bytes maximum packet size #define P2P_DEFAULT_PEERS_IN_HANDSHAKE 250 +#define P2P_MAX_PEERS_IN_HANDSHAKE 250 #define P2P_DEFAULT_CONNECTION_TIMEOUT 5000 //5 seconds #define P2P_DEFAULT_SOCKS_CONNECT_TIMEOUT 45 // seconds #define P2P_DEFAULT_PING_CONNECTION_TIMEOUT 2000 //2 seconds diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index cec037916..8000835c4 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -2064,6 +2064,11 @@ namespace nodetool template<class t_payload_net_handler> bool node_server<t_payload_net_handler>::handle_remote_peerlist(const std::vector<peerlist_entry>& peerlist, const epee::net_utils::connection_context_base& context) { + if (peerlist.size() > P2P_MAX_PEERS_IN_HANDSHAKE) + { + MWARNING(context << "peer sent " << peerlist.size() << " peers, considered spamming"); + return false; + } std::vector<peerlist_entry> peerlist_ = peerlist; if(!sanitize_peerlist(peerlist_)) return false; |