blob: 90c5d92bcd41c3568d06bac8d5f2f935354c7c2b [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
mmoroz1622efb2015-12-08 01:26:238#include <vector>
9
ricea105ae612016-09-08 08:00:0710#include "base/test/fuzzed_data_provider.h"
mmoroz1622efb2015-12-08 01:26:2311#include "net/websockets/websocket_frame_parser.h"
12
13// Entry point for LibFuzzer.
mmoroze87d66d52016-02-05 19:10:5714extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
ricea105ae612016-09-08 08:00:0715 base::FuzzedDataProvider fuzzed_data_provider(data, size);
mmoroz1622efb2015-12-08 01:26:2316 net::WebSocketFrameParser parser;
danakj9c5cab52016-04-16 00:54:3317 std::vector<std::unique_ptr<net::WebSocketFrameChunk>> frame_chunks;
ricea105ae612016-09-08 08:00:0718 while (fuzzed_data_provider.remaining_bytes() > 0) {
Abhishek Arya5b644f62018-11-28 00:47:1719 size_t chunk_size = fuzzed_data_provider.ConsumeIntegralInRange(1, 32);
Max Morozc416f802018-11-21 22:15:4220 std::vector<char> chunk =
21 fuzzed_data_provider.ConsumeBytes<char>(chunk_size);
ricea105ae612016-09-08 08:00:0722 parser.Decode(chunk.data(), chunk.size(), &frame_chunks);
23 }
mmoroz1622efb2015-12-08 01:26:2324 return 0;
25}