From 80ba7fb03515c9ed91103f42e60d1e82289de536 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Sat, 27 Jun 2020 02:43:08 +0200 Subject: [PATCH] Fix Http.cpp fuzzing as HttpWithProxy --- fuzzing/Http.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/fuzzing/Http.cpp b/fuzzing/Http.cpp index f237688..fe77755 100644 --- a/fuzzing/Http.cpp +++ b/fuzzing/Http.cpp @@ -10,6 +10,9 @@ /* And the router */ #include "../src/HttpRouter.h" +/* Also ProxyParser */ +#include "../src/ProxyParser.h" + struct StaticData { struct RouterData { @@ -76,8 +79,15 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* User data */ void *user = (void *) 13; + /* If we are built with WITH_PROXY, pass a ProxyParser as reserved */ + void *reserved = nullptr; +#ifdef UWS_WITH_PROXY + uWS::ProxyParser pp; + reserved = (void *) &pp; +#endif + /* Iterate the padded fuzz as chunks */ - makeChunked(makePadded(data, size), size, [&httpParser, user](const uint8_t *data, size_t size) { + makeChunked(makePadded(data, size), size, [&httpParser, user, reserved](const uint8_t *data, size_t size) { /* We need at least 1 byte post padding */ if (size) { size--; @@ -85,9 +95,9 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { /* We might be given zero length chunks */ return; } - + /* Parse it */ - httpParser.consumePostPadded((char *) data, size, user, nullptr, [](void *s, uWS::HttpRequest *httpRequest) -> void * { + httpParser.consumePostPadded((char *) data, size, user, reserved, [](void *s, uWS::HttpRequest *httpRequest) -> void * { readBytes(httpRequest->getHeader(httpRequest->getUrl())); readBytes(httpRequest->getMethod());