xref: /aosp_15_r20/external/cronet/net/server/web_socket_encoder_fuzzer.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 #include <stddef.h>
2 #include <stdint.h>
3 
4 #include <fuzzer/FuzzedDataProvider.h>
5 
6 #include <memory>
7 #include <string>
8 
9 #include "net/server/web_socket_encoder.h"
10 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)11 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
12   FuzzedDataProvider fuzzed_data_provider(data, size);
13   auto server = net::WebSocketEncoder::CreateServer();
14   int bytes_consumed;
15   std::string decoded;
16 
17   while (fuzzed_data_provider.remaining_bytes() > 0) {
18     size_t chunk_size = fuzzed_data_provider.ConsumeIntegralInRange(1, 125);
19     std::string chunk = fuzzed_data_provider.ConsumeBytesAsString(chunk_size);
20     server->DecodeFrame(chunk, &bytes_consumed, &decoded);
21   }
22   return 0;
23 }