blob: aa927a7609ff913f07e32cb235a236c49a80142f [file] [log] [blame]
mmoroze87d66d52016-02-05 19:10:571// Copyright 2015 The Chromium Authors. All rights reserved.
mmoroz1622efb2015-12-08 01:26:232// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
mmoroze87d66d52016-02-05 19:10:575#include <stddef.h>
6#include <stdint.h>
7
Max Moroza1707f42019-08-28 21:10:288#include <fuzzer/FuzzedDataProvider.h>
9
mmoroz1622efb2015-12-08 01:26:2310#include <vector>
11
12#include "net/websockets/websocket_frame_parser.h"
13
14// Entry point for LibFuzzer.
mmoroze87d66d52016-02-05 19:10:5715extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
Max Morozcfbe47cc2019-06-24 17:45:0216 FuzzedDataProvider fuzzed_data_provider(data, size);
mmoroz1622efb2015-12-08 01:26:2317 net::WebSocketFrameParser parser;
danakj9c5cab52016-04-16 00:54:3318 std::vector<std::unique_ptr<net::WebSocketFrameChunk>> frame_chunks;
ricea105ae612016-09-08 08:00:0719 while (fuzzed_data_provider.remaining_bytes() > 0) {
Abhishek Arya5b644f62018-11-28 00:47:1720 size_t chunk_size = fuzzed_data_provider.ConsumeIntegralInRange(1, 32);
Max Morozc416f802018-11-21 22:15:4221 std::vector<char> chunk =
22 fuzzed_data_provider.ConsumeBytes<char>(chunk_size);
ricea105ae612016-09-08 08:00:0723 parser.Decode(chunk.data(), chunk.size(), &frame_chunks);
24 }
mmoroz1622efb2015-12-08 01:26:2325 return 0;
26}