Fix Http.cpp fuzzing as HttpWithProxy

This commit is contained in:
Alex Hultman
2020-06-27 02:43:08 +02:00
parent 2c62b07453
commit 80ba7fb035
+12 -2
View File
@@ -10,6 +10,9 @@
/* And the router */ /* And the router */
#include "../src/HttpRouter.h" #include "../src/HttpRouter.h"
/* Also ProxyParser */
#include "../src/ProxyParser.h"
struct StaticData { struct StaticData {
struct RouterData { struct RouterData {
@@ -76,8 +79,15 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
/* User data */ /* User data */
void *user = (void *) 13; 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 */ /* 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 */ /* We need at least 1 byte post padding */
if (size) { if (size) {
size--; size--;
@@ -87,7 +97,7 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
} }
/* Parse it */ /* 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->getHeader(httpRequest->getUrl()));
readBytes(httpRequest->getMethod()); readBytes(httpRequest->getMethod());