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