Coverage Report

Created: 2026-10-17 07:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/exiv2/fuzz/fuzz-preview.cpp
Line
Count
Source
1
#include <exiv2/exiv2.hpp>
2
3
#include <cassert>
4
#include <iomanip>
5
#include <iostream>
6
7
33.2k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
8
  // Invalid files generate a lot of warnings, so switch off logging.
9
33.2k
  Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute);
10
11
33.2k
  try {
12
33.2k
    Exiv2::DataBuf data_copy(data, size);
13
33.2k
    Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(data_copy.c_data(), size);
14
33.2k
    assert(image.get() != 0);
15
16
33.2k
    image->readMetadata();
17
18
33.2k
    Exiv2::PreviewManager pm(*image);
19
33.2k
    std::ostringstream os;
20
33.2k
    Exiv2::PreviewPropertiesList list = pm.getPreviewProperties();
21
33.2k
    for (const auto& pos : list) {
22
15.7k
      os << pos.mimeType_ << "\n";
23
24
15.7k
      if (pos.width_ != 0 && pos.height_ != 0)
25
7.90k
        os << pos.width_ << " " << pos.height_ << " ";
26
27
15.7k
      os << pos.size_ << "\n";
28
15.7k
    }
29
30
33.2k
  } catch (...) {
31
    // Exiv2 throws an exception if the metadata is invalid.
32
10.0k
  }
33
34
33.2k
  return 0;
35
33.2k
}