xref: /aosp_15_r20/external/puffin/src/fuzzer_huff.cc (revision 07fb1d065b7cfb4729786fadd42a612532d2f466)
1*07fb1d06SElliott Hughes // Copyright 2019 The ChromiumOS Authors
2*07fb1d06SElliott Hughes // Use of this source code is governed by a BSD-style license that can be
3*07fb1d06SElliott Hughes // found in the LICENSE file.
4*07fb1d06SElliott Hughes 
5*07fb1d06SElliott Hughes #include "base/logging.h"
6*07fb1d06SElliott Hughes #include "brillo/test_helpers.h"
7*07fb1d06SElliott Hughes 
8*07fb1d06SElliott Hughes #include "puffin/src/bit_writer.h"
9*07fb1d06SElliott Hughes #include "puffin/src/include/puffin/common.h"
10*07fb1d06SElliott Hughes #include "puffin/src/include/puffin/huffer.h"
11*07fb1d06SElliott Hughes #include "puffin/src/puff_reader.h"
12*07fb1d06SElliott Hughes 
13*07fb1d06SElliott Hughes using puffin::Buffer;
14*07fb1d06SElliott Hughes using puffin::BufferBitWriter;
15*07fb1d06SElliott Hughes using puffin::BufferPuffReader;
16*07fb1d06SElliott Hughes using puffin::ByteExtent;
17*07fb1d06SElliott Hughes using puffin::Huffer;
18*07fb1d06SElliott Hughes 
19*07fb1d06SElliott Hughes namespace {
FuzzHuff(const uint8_t * data,size_t size)20*07fb1d06SElliott Hughes void FuzzHuff(const uint8_t* data, size_t size) {
21*07fb1d06SElliott Hughes   BufferPuffReader puff_reader(data, size);
22*07fb1d06SElliott Hughes   Buffer deflate_buffer(size);
23*07fb1d06SElliott Hughes   BufferBitWriter bit_writer(deflate_buffer.data(), deflate_buffer.size());
24*07fb1d06SElliott Hughes   Huffer huffer;
25*07fb1d06SElliott Hughes   huffer.HuffDeflate(&puff_reader, &bit_writer);
26*07fb1d06SElliott Hughes }
27*07fb1d06SElliott Hughes 
28*07fb1d06SElliott Hughes class Environment {
29*07fb1d06SElliott Hughes  public:
Environment()30*07fb1d06SElliott Hughes   Environment() {
31*07fb1d06SElliott Hughes     // To turn off the logging.
32*07fb1d06SElliott Hughes     logging::SetMinLogLevel(logging::LOGGING_FATAL);
33*07fb1d06SElliott Hughes   }
34*07fb1d06SElliott Hughes };
35*07fb1d06SElliott Hughes 
36*07fb1d06SElliott Hughes }  // namespace
37*07fb1d06SElliott Hughes 
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)38*07fb1d06SElliott Hughes extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
39*07fb1d06SElliott Hughes   static Environment env;
40*07fb1d06SElliott Hughes 
41*07fb1d06SElliott Hughes   FuzzHuff(data, size);
42*07fb1d06SElliott Hughes   return 0;
43*07fb1d06SElliott Hughes }
44