|
9 | 9 | import struct
|
10 | 10 |
|
11 | 11 | from test_framework.messages import ser_uint256, hash256
|
| 12 | +from test_framework.netutil import ADDRMAN_NEW_BUCKET_COUNT, ADDRMAN_TRIED_BUCKET_COUNT, ADDRMAN_BUCKET_SIZE |
12 | 13 | from test_framework.p2p import MAGIC_BYTES
|
13 | 14 | from test_framework.test_framework import BitcoinTestFramework
|
14 | 15 | from test_framework.test_node import ErrorMatch
|
15 | 16 | from test_framework.util import assert_equal
|
16 | 17 |
|
17 |
| - |
18 | 18 | def serialize_addrman(
|
19 | 19 | *,
|
20 | 20 | format=1,
|
@@ -117,17 +117,34 @@ def run_test(self):
|
117 | 117 |
|
118 | 118 | self.log.info("Check that corrupt addrman cannot be read (len_tried)")
|
119 | 119 | self.stop_node(0)
|
| 120 | + max_len_tried = ADDRMAN_TRIED_BUCKET_COUNT * ADDRMAN_BUCKET_SIZE |
120 | 121 | write_addrman(peers_dat, len_tried=-1)
|
121 | 122 | self.nodes[0].assert_start_raises_init_error(
|
122 |
| - expected_msg=init_error("Corrupt AddrMan serialization: nTried=-1, should be in \\[0, 16384\\]:.*"), |
| 123 | + expected_msg=init_error(f"Corrupt AddrMan serialization: nTried=-1, should be in \\[0, {max_len_tried}\\]:.*"), |
| 124 | + match=ErrorMatch.FULL_REGEX, |
| 125 | + ) |
| 126 | + |
| 127 | + self.log.info("Check that corrupt addrman cannot be read (large len_tried)") |
| 128 | + write_addrman(peers_dat, len_tried=max_len_tried + 1) |
| 129 | + self.nodes[0].assert_start_raises_init_error( |
| 130 | + expected_msg=init_error(f"Corrupt AddrMan serialization: nTried={max_len_tried + 1}, should be in \\[0, {max_len_tried}\\]:.*"), |
123 | 131 | match=ErrorMatch.FULL_REGEX,
|
124 | 132 | )
|
125 | 133 |
|
126 | 134 | self.log.info("Check that corrupt addrman cannot be read (len_new)")
|
127 | 135 | self.stop_node(0)
|
| 136 | + max_len_new = ADDRMAN_NEW_BUCKET_COUNT * ADDRMAN_BUCKET_SIZE |
128 | 137 | write_addrman(peers_dat, len_new=-1)
|
129 | 138 | self.nodes[0].assert_start_raises_init_error(
|
130 |
| - expected_msg=init_error("Corrupt AddrMan serialization: nNew=-1, should be in \\[0, 65536\\]:.*"), |
| 139 | + expected_msg=init_error(f"Corrupt AddrMan serialization: nNew=-1, should be in \\[0, {max_len_new}\\]:.*"), |
| 140 | + match=ErrorMatch.FULL_REGEX, |
| 141 | + ) |
| 142 | + |
| 143 | + self.log.info("Check that corrupt addrman cannot be read (large len_new)") |
| 144 | + self.stop_node(0) |
| 145 | + write_addrman(peers_dat, len_new=max_len_new + 1) |
| 146 | + self.nodes[0].assert_start_raises_init_error( |
| 147 | + expected_msg=init_error(f"Corrupt AddrMan serialization: nNew={max_len_new + 1}, should be in \\[0, {max_len_new}\\]:.*"), |
131 | 148 | match=ErrorMatch.FULL_REGEX,
|
132 | 149 | )
|
133 | 150 |
|
|
0 commit comments