From 42977d357051546b0b78c430079c8ed651fdc9bc Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sun, 12 Jan 2020 18:18:54 +0100 Subject: [PATCH] Add MockedEmptyHandlersServer fuzz target --- fuzzing/Makefile | 1 + fuzzing/MockedEmptyHandlersServer.cpp | 36 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 fuzzing/MockedEmptyHandlersServer.cpp diff --git a/fuzzing/Makefile b/fuzzing/Makefile index 1e01aad..39b7715 100644 --- a/fuzzing/Makefile +++ b/fuzzing/Makefile @@ -16,6 +16,7 @@ oss-fuzz: $(CXX) $(CXXFLAGS) -std=c++17 -O3 -DLIBUS_NO_SSL -I../src -I../uSockets/src MockedHelloWorld.cpp uSocketsMock.o -lz -o $(OUT)/MockedHelloWorld $(LIB_FUZZING_ENGINE) $(CXX) $(CXXFLAGS) -std=c++17 -O3 -DLIBUS_NO_SSL -I../src -I../uSockets/src MockedEchoServer.cpp uSocketsMock.o -lz -o $(OUT)/MockedEchoServer $(LIB_FUZZING_ENGINE) $(CXX) $(CXXFLAGS) -std=c++17 -O3 -DLIBUS_NO_SSL -I../src -I../uSockets/src MockedBroadcastingEchoServer.cpp uSocketsMock.o -lz -o $(OUT)/MockedBroadcastingEchoServer $(LIB_FUZZING_ENGINE) + $(CXX) $(CXXFLAGS) -std=c++17 -O3 -DLIBUS_NO_SSL -I../src -I../uSockets/src MockedEmptyHandlersServer.cpp uSocketsMock.o -lz -o $(OUT)/MockedEmptyHandlersServer $(LIB_FUZZING_ENGINE) broken: # Too small tests, failing coverage test diff --git a/fuzzing/MockedEmptyHandlersServer.cpp b/fuzzing/MockedEmptyHandlersServer.cpp new file mode 100644 index 0000000..1526fe9 --- /dev/null +++ b/fuzzing/MockedEmptyHandlersServer.cpp @@ -0,0 +1,36 @@ +#include "App.h" + +#include "helpers.h" + +/* This function pushes data to the uSockets mock */ +extern "C" void us_loop_read_mocked_data(struct us_loop *loop, char *data, unsigned int size); + +uWS::TemplatedApp *app; +us_listen_socket_t *listenSocket; + +extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) { + + app = new uWS::App(); + + struct PerSocketData { + int nothing; + }; + + app->ws("/*", { + /* Having no handlers here should not crash */ + }).listen(9001, [](us_listen_socket_t *listenSocket) { + if (listenSocket) { + std::cout << "Listening on port " << 9001 << std::endl; + ::listenSocket = listenSocket; + } + }); + + return 0; +} + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + + us_loop_read_mocked_data((struct us_loop *) uWS::Loop::get(), (char *) makePadded(data, size), size); + + return 0; +}