quic_transport_parameters_fuzzer.cc 1.1 KB

1234567891011121314151617181920212223242526272829
  1. // Copyright 2018 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include <stddef.h>
  5. #include <stdint.h>
  6. #include <fuzzer/FuzzedDataProvider.h>
  7. #include <vector>
  8. #include "net/third_party/quiche/src/quiche/quic/core/crypto/transport_parameters.h"
  9. // Entry point for LibFuzzer.
  10. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  11. FuzzedDataProvider data_provider(data, size);
  12. auto perspective = data_provider.ConsumeBool() ? quic::Perspective::IS_CLIENT
  13. : quic::Perspective::IS_SERVER;
  14. quic::TransportParameters transport_parameters;
  15. std::vector<uint8_t> remaining_bytes =
  16. data_provider.ConsumeRemainingBytes<uint8_t>();
  17. quic::ParsedQuicVersion version = quic::AllSupportedVersionsWithTls().front();
  18. CHECK(version.UsesTls());
  19. std::string error_details;
  20. quic::ParseTransportParameters(version, perspective, remaining_bytes.data(),
  21. remaining_bytes.size(), &transport_parameters,
  22. &error_details);
  23. return 0;
  24. }