Skip to content

Commit

Permalink
Fuzzing different Transport Types for all-clusters-app
Browse files Browse the repository at this point in the history
  • Loading branch information
Alami-Amine committed Sep 17, 2024
1 parent 514e810 commit 04789a3
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions examples/all-clusters-app/linux/fuzzing-main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,11 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t * aData, size_t aSize)
// For now, just dump the data as a UDP payload into the session manager.
// But maybe we should try to separately extract a PeerAddress and data from
// the incoming data?
Transport::PeerAddress peerAddr;

// dumping payload with random transport types
Transport::Type fuzzedTransportType = static_cast<Transport::Type>(*aData % 5);
Transport::PeerAddress peerAddr(fuzzedTransportType);

System::PacketBufferHandle buf =
System::PacketBufferHandle::NewWithData(aData, aSize, /* aAdditionalSize = */ 0, /* aReservedSize = */ 0);
if (buf.IsNull())
Expand All @@ -84,8 +88,17 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t * aData, size_t aSize)

// Ignoring the return value from OnMessageReceived, because we might be
// passing it all sorts of garbage that will cause it to fail.
Server::GetInstance().GetSecureSessionManager().OnMessageReceived(peerAddr, std::move(buf));

// for TCP we need to have MessageTransportContext
if (fuzzedTransportType == Transport::Type::kTcp)
{
Transport::MessageTransportContext msgContext;
Server::GetInstance().GetSecureSessionManager().OnMessageReceived(peerAddr, std::move(buf), &msgContext);
}
else
{
Server::GetInstance().GetSecureSessionManager().OnMessageReceived(peerAddr, std::move(buf));
}
// Now process pending events until our sentinel is reached.
PlatformMgr().ScheduleWork([](intptr_t) { PlatformMgr().StopEventLoopTask(); });
PlatformMgr().RunEventLoop();
Expand Down

0 comments on commit 04789a3

Please sign in to comment.