Index: net/websockets/websocket_frame_parser_fuzzer.cc |
diff --git a/net/websockets/websocket_frame_parser_fuzzer.cc b/net/websockets/websocket_frame_parser_fuzzer.cc |
index 6e4b1f39ee3b9be40597f6e2d281c763422a3242..562941dfdad1c0787f08a5627f00907e0cc92072 100644 |
--- a/net/websockets/websocket_frame_parser_fuzzer.cc |
+++ b/net/websockets/websocket_frame_parser_fuzzer.cc |
@@ -7,13 +7,18 @@ |
#include <vector> |
+#include "base/test/fuzzed_data_provider.h" |
#include "net/websockets/websocket_frame_parser.h" |
// Entry point for LibFuzzer. |
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
+ base::FuzzedDataProvider fuzzed_data_provider(data, size); |
net::WebSocketFrameParser parser; |
std::vector<std::unique_ptr<net::WebSocketFrameChunk>> frame_chunks; |
- parser.Decode(reinterpret_cast<const char*>(data), size, &frame_chunks); |
- |
+ while (fuzzed_data_provider.remaining_bytes() > 0) { |
+ size_t chunk_size = fuzzed_data_provider.ConsumeUint32InRange(1, 32); |
+ base::StringPiece chunk = fuzzed_data_provider.ConsumeBytes(chunk_size); |
+ parser.Decode(chunk.data(), chunk.size(), &frame_chunks); |
+ } |
return 0; |
} |