mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
test: add further BIP37 size limit checks to p2p_filter.py
also unified method of detecting misbehaviour (using assert_debug_log instead of checking peer's banscore)
This commit is contained in:
parent
fc00e651e4
commit
c743718558
2 changed files with 15 additions and 5 deletions
|
@ -8,6 +8,8 @@ Test BIP 37
|
||||||
|
|
||||||
from test_framework.messages import (
|
from test_framework.messages import (
|
||||||
CInv,
|
CInv,
|
||||||
|
MAX_BLOOM_FILTER_SIZE,
|
||||||
|
MAX_BLOOM_HASH_FUNCS,
|
||||||
MSG_BLOCK,
|
MSG_BLOCK,
|
||||||
MSG_FILTERED_BLOCK,
|
MSG_FILTERED_BLOCK,
|
||||||
msg_filteradd,
|
msg_filteradd,
|
||||||
|
@ -16,6 +18,7 @@ from test_framework.messages import (
|
||||||
msg_getdata,
|
msg_getdata,
|
||||||
)
|
)
|
||||||
from test_framework.mininode import P2PInterface
|
from test_framework.mininode import P2PInterface
|
||||||
|
from test_framework.script import MAX_SCRIPT_ELEMENT_SIZE
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import assert_equal
|
from test_framework.util import assert_equal
|
||||||
|
|
||||||
|
@ -67,7 +70,13 @@ class FilterTest(BitcoinTestFramework):
|
||||||
|
|
||||||
self.log.info('Check that too large filter is rejected')
|
self.log.info('Check that too large filter is rejected')
|
||||||
with self.nodes[0].assert_debug_log(['Misbehaving']):
|
with self.nodes[0].assert_debug_log(['Misbehaving']):
|
||||||
filter_node.send_and_ping(msg_filterload(data=b'\xaa', nHashFuncs=51, nTweak=0, nFlags=1))
|
filter_node.send_and_ping(msg_filterload(data=b'\xaa', nHashFuncs=MAX_BLOOM_HASH_FUNCS+1))
|
||||||
|
with self.nodes[0].assert_debug_log(['Misbehaving']):
|
||||||
|
filter_node.send_and_ping(msg_filterload(data=b'\xbb'*(MAX_BLOOM_FILTER_SIZE+1)))
|
||||||
|
|
||||||
|
self.log.info('Check that too large data element to add to the filter is rejected')
|
||||||
|
with self.nodes[0].assert_debug_log(['Misbehaving']):
|
||||||
|
filter_node.send_and_ping(msg_filteradd(data=b'\xcc'*(MAX_SCRIPT_ELEMENT_SIZE+1)))
|
||||||
|
|
||||||
self.log.info('Add filtered P2P connection to the node')
|
self.log.info('Add filtered P2P connection to the node')
|
||||||
filter_node.send_and_ping(filter_node.watch_filter_init)
|
filter_node.send_and_ping(filter_node.watch_filter_init)
|
||||||
|
@ -116,10 +125,9 @@ class FilterTest(BitcoinTestFramework):
|
||||||
assert not filter_node.merkleblock_received
|
assert not filter_node.merkleblock_received
|
||||||
assert not filter_node.tx_received
|
assert not filter_node.tx_received
|
||||||
|
|
||||||
self.log.info('Check that sending "filteradd" if no filter is set is treated as misbehavior (+100)')
|
self.log.info('Check that sending "filteradd" if no filter is set is treated as misbehavior')
|
||||||
assert_equal(self.nodes[0].getpeerinfo()[0]['banscore'], 0)
|
with self.nodes[0].assert_debug_log(['Misbehaving']):
|
||||||
filter_node.send_and_ping(msg_filteradd(data=b'letsmisbehave'))
|
filter_node.send_and_ping(msg_filteradd(data=b'letsmisbehave'))
|
||||||
assert_equal(self.nodes[0].getpeerinfo()[0]['banscore'], 100)
|
|
||||||
|
|
||||||
self.log.info("Check that division-by-zero remote crash bug [CVE-2013-5700] is fixed")
|
self.log.info("Check that division-by-zero remote crash bug [CVE-2013-5700] is fixed")
|
||||||
filter_node.send_and_ping(msg_filterload(data=b'', nHashFuncs=1))
|
filter_node.send_and_ping(msg_filterload(data=b'', nHashFuncs=1))
|
||||||
|
|
|
@ -37,6 +37,8 @@ MY_RELAY = 1 # from version 70001 onwards, fRelay should be appended to version
|
||||||
|
|
||||||
MAX_LOCATOR_SZ = 101
|
MAX_LOCATOR_SZ = 101
|
||||||
MAX_BLOCK_BASE_SIZE = 1000000
|
MAX_BLOCK_BASE_SIZE = 1000000
|
||||||
|
MAX_BLOOM_FILTER_SIZE = 36000
|
||||||
|
MAX_BLOOM_HASH_FUNCS = 50
|
||||||
|
|
||||||
COIN = 100000000 # 1 btc in satoshis
|
COIN = 100000000 # 1 btc in satoshis
|
||||||
MAX_MONEY = 21000000 * COIN
|
MAX_MONEY = 21000000 * COIN
|
||||||
|
|
Loading…
Add table
Reference in a new issue