|
13 | 13 | #include <key.h> |
14 | 14 | #include <merkleblock.h> |
15 | 15 | #include <net.h> |
| 16 | +#include <netbase.h> |
16 | 17 | #include <primitives/block.h> |
17 | 18 | #include <protocol.h> |
18 | 19 | #include <psbt.h> |
@@ -42,9 +43,9 @@ struct invalid_fuzzing_input_exception : public std::exception { |
42 | 43 | }; |
43 | 44 |
|
44 | 45 | template <typename T> |
45 | | -CDataStream Serialize(const T& obj) |
| 46 | +CDataStream Serialize(const T& obj, const int version = INIT_PROTO_VERSION) |
46 | 47 | { |
47 | | - CDataStream ds(SER_NETWORK, INIT_PROTO_VERSION); |
| 48 | + CDataStream ds(SER_NETWORK, version); |
48 | 49 | ds << obj; |
49 | 50 | return ds; |
50 | 51 | } |
@@ -77,9 +78,9 @@ void DeserializeFromFuzzingInput(const std::vector<uint8_t>& buffer, T& obj) |
77 | 78 | } |
78 | 79 |
|
79 | 80 | template <typename T> |
80 | | -void AssertEqualAfterSerializeDeserialize(const T& obj) |
| 81 | +void AssertEqualAfterSerializeDeserialize(const T& obj, const int version = INIT_PROTO_VERSION) |
81 | 82 | { |
82 | | - assert(Deserialize<T>(Serialize(obj)) == obj); |
| 83 | + assert(Deserialize<T>(Serialize(obj, version)) == obj); |
83 | 84 | } |
84 | 85 |
|
85 | 86 | } // namespace |
@@ -181,7 +182,10 @@ void test_one_input(const std::vector<uint8_t>& buffer) |
181 | 182 | #elif NETADDR_DESERIALIZE |
182 | 183 | CNetAddr na; |
183 | 184 | DeserializeFromFuzzingInput(buffer, na); |
184 | | - AssertEqualAfterSerializeDeserialize(na); |
| 185 | + if (na.IsAddrV1Compatible()) { |
| 186 | + AssertEqualAfterSerializeDeserialize(na); |
| 187 | + } |
| 188 | + AssertEqualAfterSerializeDeserialize(na, INIT_PROTO_VERSION | ADDRV2_FORMAT); |
185 | 189 | #elif SERVICE_DESERIALIZE |
186 | 190 | CService s; |
187 | 191 | DeserializeFromFuzzingInput(buffer, s); |
|
0 commit comments