diff --git a/fuzzing/Http.cpp b/fuzzing/Http.cpp new file mode 100644 index 0000000..f01c648 --- /dev/null +++ b/fuzzing/Http.cpp @@ -0,0 +1,42 @@ +/* This is a fuzz test of the http parser */ + +#define WIN32_EXPORT + +/* We test the websocket parser */ +#include "../src/HttpParser.h" + +/* We use this to pad the fuzz */ +char *padded = new char[1024 * 500]; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { + + /* Pad the fuzz */ + uWS::HttpParser httpParser; + memcpy(padded + 32, data, size); + + /* User data */ + void *user = (void *) 13; + + /* Parse it */ + httpParser.consumePostPadded(padded + 32, size, user, [](void *s, uWS::HttpRequest *httpRequest) -> void * { + + /* todo: Route this via router */ + + + /* Return ok */ + return s; + + }, [](void *user, std::string_view data, bool fin) -> void * { + + /* Return ok */ + return user; + + }, [](void *user) { + + /* Return break */ + return nullptr; + }); + + return 0; +} + diff --git a/fuzzing/Makefile b/fuzzing/Makefile index 76bde88..f0c1be3 100644 --- a/fuzzing/Makefile +++ b/fuzzing/Makefile @@ -1,2 +1,3 @@ default: - clang++ -fsanitize=address,fuzzer -O3 WebSocket.cpp -o WebSocket + clang++ -std=c++17 -fsanitize=address,fuzzer -O3 WebSocket.cpp -o WebSocket + clang++ -std=c++17 -fsanitize=address,fuzzer -O3 Http.cpp -o Http