From 654472a461bc9d1603c46dcb7a5b2dc87a44045a Mon Sep 17 00:00:00 2001 From: Dhruv Mehta <856960+dhruv@users.noreply.github.com> Date: Sun, 23 May 2021 08:10:25 -0700 Subject: [PATCH] [fuzz] Add serialization to deserialization test Before commit: 306853 REDUCE cov: 798 ft: 5820 corp: 150/375Kb lim: 68333 exec/s: 1382 rss: 461Mb L: 254/63171 MS: 1 EraseBytes- 1453105 REDUCE cov: 798 ft: 5820 corp: 150/369Kb lim: 79613 exec/s: 1467 rss: 461Mb L: 6027/60873 MS: 1 EraseBytes- After commit: 303389 NEW cov: 1202 ft: 8382 corp: 157/382Kb lim: 68189 exec/s: 1451 rss: 447Mb L: 1386/65459 MS: 1 CopyPart- 1428759 REDUCE cov: 1202 ft: 8512 corp: 169/389Kb lim: 78749 exec/s: 1528 rss: 463Mb L: 1627/60488 MS: 1 EraseBytes- --- src/Makefile.test.include | 2 +- ...eserializer.cpp => p2p_transport_serialization.cpp} | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) rename src/test/fuzz/{p2p_transport_deserializer.cpp => p2p_transport_serialization.cpp} (76%) diff --git a/src/Makefile.test.include b/src/Makefile.test.include index dc79ea3125a..35bff51438b 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -257,7 +257,7 @@ test_fuzz_fuzz_SOURCES = \ test/fuzz/netaddress.cpp \ test/fuzz/netbase_dns_lookup.cpp \ test/fuzz/node_eviction.cpp \ - test/fuzz/p2p_transport_deserializer.cpp \ + test/fuzz/p2p_transport_serialization.cpp \ test/fuzz/parse_hd_keypath.cpp \ test/fuzz/parse_iso8601.cpp \ test/fuzz/parse_numbers.cpp \ diff --git a/src/test/fuzz/p2p_transport_deserializer.cpp b/src/test/fuzz/p2p_transport_serialization.cpp similarity index 76% rename from src/test/fuzz/p2p_transport_deserializer.cpp rename to src/test/fuzz/p2p_transport_serialization.cpp index 3a1fdaad8fe..2618a2a3986 100644 --- a/src/test/fuzz/p2p_transport_deserializer.cpp +++ b/src/test/fuzz/p2p_transport_serialization.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include @@ -13,15 +14,16 @@ #include #include -void initialize_p2p_transport_deserializer() +void initialize_p2p_transport_serialization() { SelectParams(CBaseChainParams::REGTEST); } -FUZZ_TARGET_INIT(p2p_transport_deserializer, initialize_p2p_transport_deserializer) +FUZZ_TARGET_INIT(p2p_transport_serialization, initialize_p2p_transport_serialization) { // Construct deserializer, with a dummy NodeId V1TransportDeserializer deserializer{Params(), (NodeId)0, SER_NETWORK, INIT_PROTO_VERSION}; + V1TransportSerializer serializer{}; Span msg_bytes{buffer}; while (msg_bytes.size() > 0) { const int handled = deserializer.Read(msg_bytes); @@ -37,6 +39,10 @@ FUZZ_TARGET_INIT(p2p_transport_deserializer, initialize_p2p_transport_deserializ assert(result->m_raw_message_size <= buffer.size()); assert(result->m_raw_message_size == CMessageHeader::HEADER_SIZE + result->m_message_size); assert(result->m_time == m_time); + + std::vector header; + auto msg = CNetMsgMaker{result->m_recv.GetVersion()}.Make(result->m_command, MakeUCharSpan(result->m_recv)); + serializer.prepareForTransport(msg, header); } } }