fido_hid_message_fuzzer.cc 1017 B

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2017 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 <algorithm>
  7. #include <vector>
  8. #include "base/containers/span.h"
  9. #include "device/fido/hid/fido_hid_message.h"
  10. namespace device {
  11. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  12. constexpr size_t kHidPacketSize = 64;
  13. auto span = base::make_span(data, size);
  14. auto packet = span.first(std::min(kHidPacketSize, span.size()));
  15. auto msg = FidoHidMessage::CreateFromSerializedData(
  16. std::vector<uint8_t>(packet.begin(), packet.end()));
  17. if (!msg)
  18. return 0;
  19. span = span.subspan(packet.size());
  20. while (!span.empty()) {
  21. packet = span.first(std::min(kHidPacketSize, span.size()));
  22. msg->AddContinuationPacket(
  23. std::vector<uint8_t>(packet.begin(), packet.end()));
  24. span = span.subspan(packet.size());
  25. }
  26. return 0;
  27. }
  28. } // namespace device