Coverage Report

Created: 2025-07-18 07:09

/src/guetzli/fuzz_target.cc
Line
Count
Source
1
#include <stdint.h>
2
#include "guetzli/jpeg_data.h"
3
#include "guetzli/jpeg_data_reader.h"
4
#include "guetzli/processor.h"
5
6
5.44k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
7
5.44k
  std::string jpeg_data(reinterpret_cast<const char*>(data), size);
8
9
  // Ignore large images, to prevent timeouts.
10
5.44k
  guetzli::JPEGData jpg_header;
11
5.44k
  if (!guetzli::ReadJpeg(data, size, guetzli::JPEG_READ_HEADER, &jpg_header)) {
12
803
    return 0;
13
803
  }
14
4.63k
  static constexpr int kMaxPixels = 10000;
15
4.63k
  if (static_cast<int64_t>(jpg_header.width) * jpg_header.height > kMaxPixels) {
16
21
    return 0;
17
21
  }
18
19
  // TODO(robryk): Use nondefault parameters.
20
4.61k
  guetzli::Params params;
21
4.61k
  std::string jpeg_out;
22
4.61k
  (void)guetzli::Process(params, nullptr, jpeg_data, &jpeg_out);
23
  // TODO(robryk): Verify output distance if Process() succeeded.
24
4.61k
  return 0;
25
4.63k
}
26
27
28
29