diff options
-rw-r--r-- | src/net.cpp | 11 | ||||
-rw-r--r-- | src/net.h | 5 | ||||
-rwxr-xr-x | test/functional/p2p_invalid_messages.py | 9 |
3 files changed, 7 insertions, 18 deletions
diff --git a/src/net.cpp b/src/net.cpp index 210258c25a..8b9ef1d0aa 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -577,12 +577,6 @@ bool CNode::ReceiveMsgBytes(const char *pch, unsigned int nBytes, bool& complete return false; } - if (m_deserializer->OversizedMessageDetected()) { - LogPrint(BCLog::NET, "Oversized message from peer=%i, disconnecting\n", GetId()); - m_deserializer->Reset(); - return false; - } - pch += handled; nBytes -= handled; @@ -655,9 +649,10 @@ int V1TransportDeserializer::readHeader(const char *pch, unsigned int nBytes) return -1; } - // reject messages larger than MAX_SIZE - if (hdr.nMessageSize > MAX_SIZE) + // reject messages larger than MAX_SIZE or MAX_PROTOCOL_MESSAGE_LENGTH + if (hdr.nMessageSize > MAX_SIZE || hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH) { return -1; + } // switch state to reading message data in_data = true; @@ -642,8 +642,6 @@ public: virtual void Reset() = 0; // returns true if the current deserialization is complete virtual bool Complete() const = 0; - // checks if the potential message in deserialization is oversized - virtual bool OversizedMessageDetected() const = 0; // set the serialization context version virtual void SetVersion(int version) = 0; // read and deserialize data @@ -695,9 +693,6 @@ public: hdrbuf.SetVersion(nVersionIn); vRecv.SetVersion(nVersionIn); } - bool OversizedMessageDetected() const { - return (in_data && hdr.nMessageSize > MAX_PROTOCOL_MESSAGE_LENGTH); - } int Read(const char *pch, unsigned int nBytes) { return in_data ? readData(pch, nBytes) : readHeader(pch, nBytes); } diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py index 8fcf5b878f..f0ceb8e6a3 100755 --- a/test/functional/p2p_invalid_messages.py +++ b/test/functional/p2p_invalid_messages.py @@ -101,11 +101,10 @@ class InvalidMessagesTest(BitcoinTestFramework): msg_over_size = msg_unrecognized(str_data="b" * (valid_data_limit + 1)) assert len(msg_over_size.serialize()) == (msg_limit + 1) - with node.assert_debug_log(["Oversized message from peer=4, disconnecting"]): - # An unknown message type (or *any* message type) over - # MAX_PROTOCOL_MESSAGE_LENGTH should result in a disconnect. - node.p2p.send_message(msg_over_size) - node.p2p.wait_for_disconnect(timeout=4) + # An unknown message type (or *any* message type) over + # MAX_PROTOCOL_MESSAGE_LENGTH should result in a disconnect. + node.p2p.send_message(msg_over_size) + node.p2p.wait_for_disconnect(timeout=4) node.disconnect_p2ps() conn = node.add_p2p_connection(P2PDataStore()) |