From e6a917c8f8e0f1a0fa71dc9bbb6e1074f81edea3 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Mon, 9 Jun 2025 13:29:19 +0200 Subject: [PATCH] fuzz: add Fuzzed NetEventsInterface and use it in connman tests --- src/test/fuzz/connman.cpp | 2 ++ src/test/fuzz/util/net.h | 24 ++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/test/fuzz/connman.cpp b/src/test/fuzz/connman.cpp index a62d227da8e..8513f07fead 100644 --- a/src/test/fuzz/connman.cpp +++ b/src/test/fuzz/connman.cpp @@ -51,6 +51,7 @@ FUZZ_TARGET(connman, .init = initialize_connman) } } AddrManDeterministic& addr_man{*addr_man_ptr}; + auto net_events{ConsumeNetEvents(fuzzed_data_provider)}; ConnmanTestMsg connman{fuzzed_data_provider.ConsumeIntegral(), fuzzed_data_provider.ConsumeIntegral(), addr_man, @@ -60,6 +61,7 @@ FUZZ_TARGET(connman, .init = initialize_connman) const uint64_t max_outbound_limit{fuzzed_data_provider.ConsumeIntegral()}; CConnman::Options options; + options.m_msgproc = &net_events; options.nMaxOutboundLimit = max_outbound_limit; connman.Init(options); diff --git a/src/test/fuzz/util/net.h b/src/test/fuzz/util/net.h index 698001a7f15..200638441ee 100644 --- a/src/test/fuzz/util/net.h +++ b/src/test/fuzz/util/net.h @@ -139,6 +139,25 @@ public: } }; +class FuzzedNetEvents : public NetEventsInterface +{ +public: + FuzzedNetEvents(FuzzedDataProvider& fdp) : m_fdp(fdp) {} + + virtual void InitializeNode(const CNode&, ServiceFlags) override {} + + virtual void FinalizeNode(const CNode&) override {} + + virtual bool HasAllDesirableServiceFlags(ServiceFlags) const override { return m_fdp.ConsumeBool(); } + + virtual bool ProcessMessages(CNode*, std::atomic&) override { return m_fdp.ConsumeBool(); } + + virtual bool SendMessages(CNode*) override { return m_fdp.ConsumeBool(); } + +private: + FuzzedDataProvider& m_fdp; +}; + class FuzzedSock : public Sock { FuzzedDataProvider& m_fuzzed_data_provider; @@ -203,6 +222,11 @@ public: bool IsConnected(std::string& errmsg) const override; }; +[[nodiscard]] inline FuzzedNetEvents ConsumeNetEvents(FuzzedDataProvider& fdp) noexcept +{ + return FuzzedNetEvents{fdp}; +} + [[nodiscard]] inline FuzzedSock ConsumeSock(FuzzedDataProvider& fuzzed_data_provider) { return FuzzedSock{fuzzed_data_provider};