From 41ed5e3990f4b0e594c903ea4a0897486dfca023 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Wed, 3 Apr 2019 03:51:15 +0200 Subject: [PATCH] Fuzz WebSockets in chunks --- fuzzing/WebSocket.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fuzzing/WebSocket.cpp b/fuzzing/WebSocket.cpp index 151b018..73cbc8e 100644 --- a/fuzzing/WebSocket.cpp +++ b/fuzzing/WebSocket.cpp @@ -2,12 +2,11 @@ #define WIN32_EXPORT +#include "helpers.h" + /* We test the websocket parser */ #include "../src/WebSocketProtocol.h" -/* We use this to pad the fuzz */ -char *padded = new char[1024 * 500]; - struct Impl { static bool refusePayloadLength(uint64_t length, uWS::WebSocketState *wState, void *s) { @@ -47,12 +46,13 @@ struct Impl { extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - /* Pad the fuzz */ + /* Create the parser state */ uWS::WebSocketState state; - memcpy(padded + 32, data, size); - /* Parse it */ - uWS::WebSocketProtocol::consume((char *)padded + 32, size, &state, nullptr); + makeChunked(makePadded(data, size), size, [&state](const uint8_t *data, size_t size) { + /* Parse it */ + uWS::WebSocketProtocol::consume((char *) data, size, &state, nullptr); + }); return 0; }