fuzzer_huff.cc 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright 2019 The Chromium OS 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 "base/logging.h"
  5. #include "puffin/src/bit_writer.h"
  6. #include "puffin/src/include/puffin/common.h"
  7. #include "puffin/src/include/puffin/huffer.h"
  8. #include "puffin/src/puff_reader.h"
  9. using puffin::Buffer;
  10. using puffin::BufferBitWriter;
  11. using puffin::BufferPuffReader;
  12. using puffin::ByteExtent;
  13. using puffin::Huffer;
  14. namespace {
  15. void FuzzHuff(const uint8_t* data, size_t size) {
  16. BufferPuffReader puff_reader(data, size);
  17. Buffer deflate_buffer(size);
  18. BufferBitWriter bit_writer(deflate_buffer.data(), deflate_buffer.size());
  19. Huffer huffer;
  20. huffer.HuffDeflate(&puff_reader, &bit_writer);
  21. }
  22. class Environment {
  23. public:
  24. Environment() {
  25. // To turn off the logging.
  26. logging::SetMinLogLevel(logging::LOG_FATAL);
  27. }
  28. };
  29. } // namespace
  30. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  31. static Environment env;
  32. FuzzHuff(data, size);
  33. return 0;
  34. }