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