Skip to content

Commit 87d24e6

Browse files
tests: Add integer serialization/deserialization fuzzing harness
1 parent 5236b2e commit 87d24e6

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/test/fuzz/integer.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,44 @@ void test_one_input(const std::vector<uint8_t>& buffer)
227227
(void)HasAllDesirableServiceFlags(service_flags);
228228
(void)MayHaveUsefulAddressDB(service_flags);
229229
}
230+
231+
{
232+
CDataStream stream(SER_NETWORK, INIT_PROTO_VERSION);
233+
234+
ser_writedata64(stream, u64);
235+
const uint64_t deserialized_u64 = ser_readdata64(stream);
236+
assert(u64 == deserialized_u64 && stream.empty());
237+
238+
ser_writedata32(stream, u32);
239+
const uint32_t deserialized_u32 = ser_readdata32(stream);
240+
assert(u32 == deserialized_u32 && stream.empty());
241+
242+
ser_writedata32be(stream, u32);
243+
const uint32_t deserialized_u32be = ser_readdata32be(stream);
244+
assert(u32 == deserialized_u32be && stream.empty());
245+
246+
ser_writedata16(stream, u16);
247+
const uint16_t deserialized_u16 = ser_readdata16(stream);
248+
assert(u16 == deserialized_u16 && stream.empty());
249+
250+
ser_writedata16be(stream, u16);
251+
const uint16_t deserialized_u16be = ser_readdata16be(stream);
252+
assert(u16 == deserialized_u16be && stream.empty());
253+
254+
ser_writedata8(stream, u8);
255+
const uint8_t deserialized_u8 = ser_readdata8(stream);
256+
assert(u8 == deserialized_u8 && stream.empty());
257+
}
258+
259+
{
260+
CDataStream stream(SER_NETWORK, INIT_PROTO_VERSION);
261+
262+
WriteCompactSize(stream, u64);
263+
try {
264+
const uint64_t deserialized_u64 = ReadCompactSize(stream);
265+
assert(u64 == deserialized_u64 && stream.empty());
266+
}
267+
catch (const std::ios_base::failure&) {
268+
}
269+
}
230270
}

0 commit comments

Comments
 (0)