|
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