Skip to content

Commit c5dd72e

Browse files
committed
fuzz: move FuzzedSock earlier in src/test/fuzz/util.h
This way it can be used in `ConsumeNode()`.
1 parent cec6781 commit c5dd72e

File tree

1 file changed

+40
-40
lines changed

1 file changed

+40
-40
lines changed

src/test/fuzz/util.h

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,46 @@
3838

3939
class PeerManager;
4040

41+
class FuzzedSock : public Sock
42+
{
43+
FuzzedDataProvider& m_fuzzed_data_provider;
44+
45+
/**
46+
* Data to return when `MSG_PEEK` is used as a `Recv()` flag.
47+
* If `MSG_PEEK` is used, then our `Recv()` returns some random data as usual, but on the next
48+
* `Recv()` call we must return the same data, thus we remember it here.
49+
*/
50+
mutable std::optional<uint8_t> m_peek_data;
51+
52+
public:
53+
explicit FuzzedSock(FuzzedDataProvider& fuzzed_data_provider);
54+
55+
~FuzzedSock() override;
56+
57+
FuzzedSock& operator=(Sock&& other) override;
58+
59+
void Reset() override;
60+
61+
ssize_t Send(const void* data, size_t len, int flags) const override;
62+
63+
ssize_t Recv(void* buf, size_t len, int flags) const override;
64+
65+
int Connect(const sockaddr*, socklen_t) const override;
66+
67+
std::unique_ptr<Sock> Accept(sockaddr* addr, socklen_t* addr_len) const override;
68+
69+
int GetSockOpt(int level, int opt_name, void* opt_val, socklen_t* opt_len) const override;
70+
71+
bool Wait(std::chrono::milliseconds timeout, Event requested, Event* occurred = nullptr) const override;
72+
73+
bool IsConnected(std::string& errmsg) const override;
74+
};
75+
76+
[[nodiscard]] inline FuzzedSock ConsumeSock(FuzzedDataProvider& fuzzed_data_provider)
77+
{
78+
return FuzzedSock{fuzzed_data_provider};
79+
}
80+
4181
template <typename... Callables>
4282
size_t CallOneOf(FuzzedDataProvider& fuzzed_data_provider, Callables... callables)
4383
{
@@ -375,44 +415,4 @@ void ReadFromStream(FuzzedDataProvider& fuzzed_data_provider, Stream& stream) no
375415
}
376416
}
377417

378-
class FuzzedSock : public Sock
379-
{
380-
FuzzedDataProvider& m_fuzzed_data_provider;
381-
382-
/**
383-
* Data to return when `MSG_PEEK` is used as a `Recv()` flag.
384-
* If `MSG_PEEK` is used, then our `Recv()` returns some random data as usual, but on the next
385-
* `Recv()` call we must return the same data, thus we remember it here.
386-
*/
387-
mutable std::optional<uint8_t> m_peek_data;
388-
389-
public:
390-
explicit FuzzedSock(FuzzedDataProvider& fuzzed_data_provider);
391-
392-
~FuzzedSock() override;
393-
394-
FuzzedSock& operator=(Sock&& other) override;
395-
396-
void Reset() override;
397-
398-
ssize_t Send(const void* data, size_t len, int flags) const override;
399-
400-
ssize_t Recv(void* buf, size_t len, int flags) const override;
401-
402-
int Connect(const sockaddr*, socklen_t) const override;
403-
404-
std::unique_ptr<Sock> Accept(sockaddr* addr, socklen_t* addr_len) const override;
405-
406-
int GetSockOpt(int level, int opt_name, void* opt_val, socklen_t* opt_len) const override;
407-
408-
bool Wait(std::chrono::milliseconds timeout, Event requested, Event* occurred = nullptr) const override;
409-
410-
bool IsConnected(std::string& errmsg) const override;
411-
};
412-
413-
[[nodiscard]] inline FuzzedSock ConsumeSock(FuzzedDataProvider& fuzzed_data_provider)
414-
{
415-
return FuzzedSock{fuzzed_data_provider};
416-
}
417-
418418
#endif // BITCOIN_TEST_FUZZ_UTIL_H

0 commit comments

Comments
 (0)