Coverage Report

Created: 2025-08-03 06:58

/src/exiv2/fuzz/fuzz-read-write.cpp
Line
Count
Source
1
#include <exiv2/exiv2.hpp>
2
3
#include <cassert>
4
#include <iomanip>
5
#include <iostream>
6
7
18.5k
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
8
  // Invalid files generate a lot of warnings, so switch off logging.
9
18.5k
  Exiv2::LogMsg::setLevel(Exiv2::LogMsg::mute);
10
11
18.5k
  Exiv2::XmpParser::initialize();
12
18.5k
  ::atexit(Exiv2::XmpParser::terminate);
13
14
18.5k
  try {
15
18.5k
    Exiv2::DataBuf data_copy(data, size);
16
18.5k
    Exiv2::Image::UniquePtr image = Exiv2::ImageFactory::open(data_copy.c_data(), size);
17
18.5k
    assert(image.get() != 0);
18
19
18.5k
    image->readMetadata();
20
18.5k
    image->writeMetadata();
21
22
18.5k
  } catch (...) {
23
    // Exiv2 throws an exception if the metadata is invalid.
24
10.1k
  }
25
26
18.5k
  return 0;
27
18.5k
}