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