diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -3358,6 +3358,7 @@ HexStr(hash.begin(), hash.begin() + CMessageHeader::CHECKSUM_SIZE), HexStr(hdr.pchChecksum, hdr.pchChecksum + CMessageHeader::CHECKSUM_SIZE)); + Misbehaving(pfrom, 100, "msg-header-checksum-mismatch"); return fMoreWork; } diff --git a/test/functional/abc-invalid-message.py b/test/functional/abc-invalid-message.py new file mode 100755 --- /dev/null +++ b/test/functional/abc-invalid-message.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# Copyright (c) 2019 The Bitcoin developers +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. +"""ABC Invalid Message Test + +Test that invalid messages get rejected and/or ban the sender as expected for +each case. +""" + +import struct +from test_framework.mininode import ( + NetworkThread, + NodeConn, + NodeConnCB, +) +from test_framework.test_framework import BitcoinTestFramework +from test_framework.util import ( + p2p_port, +) + + +def msg_bad_checksum(connection): + command = b"badcommand" + data = b"" + tmsg = connection.MAGIC_BYTES[connection.network] + tmsg += command + tmsg += b"\x00" * (12 - len(command)) + tmsg += struct.pack("