mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-05 14:06:27 -05:00
test: add BIP37 remote crash bug [CVE-2013-5700] test to p2p_filter.py
This commit is contained in:
parent
f0d6487e29
commit
0ed2d8e07d
3 changed files with 27 additions and 0 deletions
|
@ -11,6 +11,7 @@ from test_framework.messages import (
|
||||||
MSG_FILTERED_BLOCK,
|
MSG_FILTERED_BLOCK,
|
||||||
msg_getdata,
|
msg_getdata,
|
||||||
msg_filterload,
|
msg_filterload,
|
||||||
|
msg_filteradd,
|
||||||
msg_filterclear,
|
msg_filterclear,
|
||||||
)
|
)
|
||||||
from test_framework.mininode import (
|
from test_framework.mininode import (
|
||||||
|
@ -103,6 +104,10 @@ class FilterTest(BitcoinTestFramework):
|
||||||
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 7)
|
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 7)
|
||||||
filter_node.wait_for_tx(txid)
|
filter_node.wait_for_tx(txid)
|
||||||
|
|
||||||
|
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_filteradd(data=b'letstrytocrashthisnode'))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
FilterTest().main()
|
FilterTest().main()
|
||||||
|
|
|
@ -1356,6 +1356,25 @@ class msg_filterload:
|
||||||
self.data, self.nHashFuncs, self.nTweak, self.nFlags)
|
self.data, self.nHashFuncs, self.nTweak, self.nFlags)
|
||||||
|
|
||||||
|
|
||||||
|
class msg_filteradd:
|
||||||
|
__slots__ = ("data")
|
||||||
|
command = b"filteradd"
|
||||||
|
|
||||||
|
def __init__(self, data):
|
||||||
|
self.data = data
|
||||||
|
|
||||||
|
def deserialize(self, f):
|
||||||
|
self.data = deser_string(f)
|
||||||
|
|
||||||
|
def serialize(self):
|
||||||
|
r = b""
|
||||||
|
r += ser_string(self.data)
|
||||||
|
return r
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return "msg_filteradd(data={})".format(self.data)
|
||||||
|
|
||||||
|
|
||||||
class msg_filterclear:
|
class msg_filterclear:
|
||||||
__slots__ = ()
|
__slots__ = ()
|
||||||
command = b"filterclear"
|
command = b"filterclear"
|
||||||
|
|
|
@ -30,6 +30,7 @@ from test_framework.messages import (
|
||||||
msg_blocktxn,
|
msg_blocktxn,
|
||||||
msg_cmpctblock,
|
msg_cmpctblock,
|
||||||
msg_feefilter,
|
msg_feefilter,
|
||||||
|
msg_filteradd,
|
||||||
msg_filterclear,
|
msg_filterclear,
|
||||||
msg_filterload,
|
msg_filterload,
|
||||||
msg_getaddr,
|
msg_getaddr,
|
||||||
|
@ -65,6 +66,7 @@ MESSAGEMAP = {
|
||||||
b"blocktxn": msg_blocktxn,
|
b"blocktxn": msg_blocktxn,
|
||||||
b"cmpctblock": msg_cmpctblock,
|
b"cmpctblock": msg_cmpctblock,
|
||||||
b"feefilter": msg_feefilter,
|
b"feefilter": msg_feefilter,
|
||||||
|
b"filteradd": msg_filteradd,
|
||||||
b"filterclear": msg_filterclear,
|
b"filterclear": msg_filterclear,
|
||||||
b"filterload": msg_filterload,
|
b"filterload": msg_filterload,
|
||||||
b"getaddr": msg_getaddr,
|
b"getaddr": msg_getaddr,
|
||||||
|
@ -324,6 +326,7 @@ class P2PInterface(P2PConnection):
|
||||||
def on_blocktxn(self, message): pass
|
def on_blocktxn(self, message): pass
|
||||||
def on_cmpctblock(self, message): pass
|
def on_cmpctblock(self, message): pass
|
||||||
def on_feefilter(self, message): pass
|
def on_feefilter(self, message): pass
|
||||||
|
def on_filteradd(self, message): pass
|
||||||
def on_filterclear(self, message): pass
|
def on_filterclear(self, message): pass
|
||||||
def on_filterload(self, message): pass
|
def on_filterload(self, message): pass
|
||||||
def on_getaddr(self, message): pass
|
def on_getaddr(self, message): pass
|
||||||
|
|
Loading…
Add table
Reference in a new issue